Android开发 - Button的textColor属性无效,设置后字体颜色变成粉红色的原因,以及解决办法

原本想要的效果如下图:↓



可是写完代码做出来的效果如下图:↓



错误的原代码:


bt_sl_tx_sign_in_splash.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/colorTextSignInPress" android:state_pressed="true"/>
    <item android:drawable="@color/colorWhite" />
</selector>

bt_sl_tx_sign_up_splash.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/colorTextSignUpPress" android:state_pressed="true"/>
    <item android:drawable="@color/colorTextSignUpNormal" />
</selector>


布局文件:

<Button
    android:layout_width="123dp"
    android:layout_height="48dp"
    android:text="@string/sign_in"
    android:textSize="18sp"
    android:textColor="@drawable/bt_sl_tx_sign_in_splash"
    android:background="@drawable/bt_sl_bg_sign_in_splash"/>

<Button
    android:layout_width="123dp"
    android:layout_height="48dp"
    android:layout_alignParentEnd="true"
    android:text="@string/sign_up"
    android:textSize="18sp"
    android:textColor="@drawable/bt_sl_tx_sign_up_splash"
    android:background="@drawable/bt_sl_bg_sign_up_splash" />


原因及解决:不应该把字体的selector的item使用drawable属性,改为color属性即可解决。


改正后的代码:

bt_sl_tx_sign_in_splash.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorTextSignInPress" android:state_pressed="true"/>
    <item android:color="@color/colorWhite" />
</selector>

bt_sl_tx_sign_up_splash.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorTextSignUpPress" android:state_pressed="true"/>
    <item android:color="@color/colorTextSignUpNormal" />
</selector>




猜你喜欢

转载自blog.csdn.net/fucaijin/article/details/80157120
今日推荐