Android:选择器中未显示的禁用按钮的textColor?

Nou*_*n H 86 xml android button background-image selector

我正在尝试使用选择器创建一个按钮,我的按钮可以具有以下状态:

  • 启用/禁用
  • 按下/未按下

根据上述状态.我需要操纵按钮:

  • 文字颜色
  • 背景图片

该按钮从我被禁用开始,因此它应该具有禁用的textColor和禁用的按钮背景.但我可以看到默认的textColor(在样式中指定)和没有背景图像!

这是我的选择器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>
Run Code Online (Sandbox Code Playgroud)

这是我的layout.xml中的按钮声明

    <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" />
Run Code Online (Sandbox Code Playgroud)

最后这是我的风格(我的默认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>
Run Code Online (Sandbox Code Playgroud)

请帮忙!

Adi*_*mro 226

您还需要创建ColorStateList用于标识不同状态的文本颜色.

请执行下列操作:

  1. res\color命名的东西中创建另一个XML文件text_color.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>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在您的文件中,按如下style.xml方式对该text_color.xml文件进行引用:

    <style name="buttonStyle" parent="@android:style/Widget.Button">
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">@color/text_color</item>
      <item name="android:textSize">18sp</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)

这应该可以解决您的问题.

  • `text_color.xml`不能编译(对我来说,至少),除非我把它放在`drawable`文件夹中,需要将它称为`@ drawable/text_color` (4认同)

小智 5

1.在/ res /文件夹中创建一个颜色文件夹,在xml上创建颜色文件夹:

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>
Run Code Online (Sandbox Code Playgroud)

2.现在创建一个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"/>  
Run Code Online (Sandbox Code Playgroud)