选择器中禁用按钮的 textColor 没有显示?

我试图使一个选择器按钮,我的按钮可以有以下状态:

  • 启用/残疾人士
  • 按压/不按压

根据上面提到的状态。我需要操作按钮的:

  • Text color
  • 背景图像背景图像

The button starts off my being disabled so it should have the disabled textColor and the disabled button background. But I can see the default textColor (specified in style) and NO background image!

下面是我的选择器 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>

这是 my 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" />

最后,这是我的样式(其中设置了默认 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>

救命啊!

91907 次浏览
<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" />

我不能看到你的按钮在你的布局中磨光 xml。添加到你的按钮布局。

android:enabled="false"

所以你的按钮布局会是,

<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" />

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

做以下事情:

  1. res\color中创建另一个类似于 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. In your style.xml, put a reference to that text_color.xml file as follows:

    <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>
    

This should resolve your issue.

最简单的解决方案是设置颜色过滤器的背景图像和按钮,因为我看到 here

你可以这样做:

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

希望我帮到了什么人。

1. 在/res/文件夹中创建一个彩色文件夹,在 color 文件夹中在 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>

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"/>

您可以创建一个颜色列表

档案位置:

res/color/filename.xml

文件名将用作资源 ID。

参考资料:

Java 语言: R.color.filename

在 XML 中: @[package:]color/filename

句法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="hex_color"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>

例如:

保存在 res/color/button_text.xml的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>

此布局 XML 将颜色列表应用于视图:

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />

参考: 颜色表参考