KitKat xml选择器根据状态应用错误的颜色

时间:2017-03-01 07:12:33

标签: android xml

我有一个特定于Kitkat设备的问题,而且代码与较新版本的Android完全一样。我使用选择器设置按钮样式,在Kitkat上按钮的颜色为灰色(@ color / button_disabled_color),但在较新版本中颜色为蓝色(?attr / colorPrimary)。 Kitkat无法正确使用状态,还是出现了其他问题?

选择器如下所示:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/button_disabled_color" android:state_enabled="false" />
    <item android:color="?attr/colorPrimary"/>
</selector>

按钮在xml中定义如下:

<android.support.v7.widget.AppCompatButton
     android:id="@+id/buttonStandard"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:text="@string/standard_button"/>

默认按钮样式如下所示,请注意此样式被设置为主题中按钮的默认样式。

<style name="AppTheme.ButtonStyle" parent="Widget.AppCompat.Button.Colored">
    <item name="backgroundTint">@color/primary_button_color</item>
    <item name="android:textColor">@color/primary_button_text_color</item>
</style>

请注意,它适用于textColor,它以完全相同的方式完成。将?attr / colorPrimary更改为colors.xml中指定的实际颜色也没有任何区别。

1 个答案:

答案 0 :(得分:0)

添加选择器,如..

<强> square_blue.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime"> <item android:state_pressed="true" android:drawable="@drawable/square_blue_pressed"/> <item android:drawable="@drawable/square_blue_normal"/> </selector>

<强> square_blue_pressed.xml

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/light_blue" /> </shape>

<强> square_blue_normal.xml

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/dark_blue" /> </shape>

布局xml中的

<android.support.v7.widget.AppCompatTextView
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:padding="20dp"
     android:background="@drawable/square_blue"
     android:text="@string/standard_button"/>