Android:在select器不显示禁用button的textColor?

我正在尝试使用select器button我的button可以有以下状态:

  • 启用/禁用
  • 按下/不按下

根据上面提到的国家。 我需要操作button的:

  • 文本颜色
  • 背景图

该button开始我被禁用,所以它应该有禁用textColor和禁用的button背景。 但我可以看到默认的textColor(在样式中指定)和NO背景图像!

这是我的select器button_selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:state_enabled="false" android:textColor="#9D9FA2" android:drawable="@drawable/button" /> <item android:state_pressed="true" android:state_enabled="true" android:drawable="@drawable/button_pressed"/> <item android:state_pressed="true" android:state_enabled="false" android:textColor="#9D9FA2" android:drawable="@drawable/button"/> <item android:state_pressed="false" android:state_enabled="true" android:drawable="@drawable/button"/> </selector> 

这是我的layout.xml中的button声明

  <Button android:id="@+id/reserve_button" android:text="@string/reserve_button" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:paddingRight="15dp" android:layout_gravity="left" style="@style/buttonStyle" android:background="@drawable/button_selector" /> 

最后,这是我的风格(我的默认textColor设置)

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="buttonStyle"> <item name="android:textStyle">bold</item> <item name="android:textColor">#282780</item> <item name="android:textSize">18sp</item> </style> </resources> 

请帮忙!

您还需要为标识不同状态的文本颜色创build一个ColorStateList

请执行下列操作:

  1. res\color创build另一个名为类似text_color.xml XML文件。

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- disabled state --> <item android:state_enabled="false" android:color="#9D9FA2" /> <item android:color="#000"/> </selector> 
  2. 在您的style.xml ,按如下所示对text_color.xml文件进行引用:

     <style name="buttonStyle"> <item name="android:textStyle">bold</item> <item name="android:textColor">@color/text_color</item> <item name="android:textSize">18sp</item> </style> 

这应该可以解决你的问题。

最简单的解决scheme是将滤镜设置为我在这里看到的背景图像和button

你可以做如下:

 if ('need to set button disable') button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY); else button.getBackground().setColorFilter(null); 

希望我帮助了一个人

1.在/ res /文件夹中创build一个颜色文件夹,在color文件夹中创buildxml:

text_color_selector.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- disabled state --> <item android:state_enabled="false" android:color="#776678" /> <item android:color="#ffffff"/> </selector> 

2.现在创build一个XML布局: –

  <Button android:id="@+id/button_search" android:layout_width="652dp" android:layout_height="48dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="18dp" android:background="@android:color/transparent" android:text="Hello Bhaskar" android:textColor="@color/text_color_selector"/> 
 <Button android:id="@+id/reserve_button" android:text="@string/reserve_button" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:paddingRight="15dp" android:layout_gravity="left" style="@style/buttonStyle" android:background="@drawable/button_selector" /> 

我看不到你的button在你的布局xml中弄脏了。 将此添加到您的button布局。

 android:enabled="false" 

所以你的button布局将是,

 <Button android:id="@+id/reserve_button" android:text="@string/reserve_button" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:enabled="false" android:paddingRight="15dp" android:layout_gravity="left" style="@style/buttonStyle" android:background="@drawable/button_selector" /> 
 <item android:state_enabled="true"> </item> <item android:state_enabled="false"> </item> <item android:state_pressed="true" > </item> 

希望它会起作用!