Android 如何在xml选择器中设置alpha

Android 如何在xml选择器中设置alpha,android,selector,Android,Selector,我想在图标未启用时使用选择器将其灰显。看起来像这样的东西应该有用(白色背景): android:alpha=“0.5” android:alpha=“1” 但它会在运行时导致java.lang.NumberFormatException。我也试过“0.5f”。同样的错误 这与类似,但我特别询问NumberFormatException。顺便说一句,我还尝试使用0到255之间的整数值。我也有同样的错误。你不能在一个项目中这样做。您可以将形状之类的东西放在项目中,也可以在项目中使用drawabl

我想在图标未启用时使用选择器将其灰显。看起来像这样的东西应该有用(白色背景):


android:alpha=“0.5”
android:alpha=“1”
但它会在运行时导致java.lang.NumberFormatException。我也试过“0.5f”。同样的错误


这与类似,但我特别询问NumberFormatException。顺便说一句,我还尝试使用0到255之间的整数值。我也有同样的错误。

你不能在一个项目中这样做。您可以将形状之类的东西放在项目中,也可以在项目中使用drawable来实现相同的效果

你说的“灰色”是什么意思?你所展示的并不是真的变灰,而是使某些东西部分不透明。如果该项目最初是红色的,并且您将alpha更改为0.5,那么它仍然是红色的阴影。但假设我们从灰色开始,在本例中为F5(材质灰色100),那么您可以这样做:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true"  android:drawable="#FFF5F5F5" />
    <item android:state_enabled="false" android:drawable="#80F5F5F5" />

</selector>

请注意,假状态下的“80”给出了不同的不透明度。下面是一个执行类似操作的示例,但在项目内使用矩形:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true">
        <shape android:shape="rectangle">
            <solid android:color="#FFF5F5F5" />
        </shape>
    </item>
    <item android:state_enabled="false">
        <shape android:shape="rectangle">
            <solid android:color="#80F5F5F5" />
        </shape>
    </item>
</selector>

考虑到这是您的颜色选择器,它位于res/color/my_selector.xml下

注意:此功能适用于Android 23及以上设备

可以将此颜色选择器中的alpha用作

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="@color/my_color" android:state_enabled="true" />
  <item android:alpha="@dimen/my_float_value" android:color="@color/my_color" />
</selector>

用这个-

<Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/button_label"
      android:background="@color/my_selector" />

有关更多参考,请参阅以下链接:

谢谢,可能是重复的。我知道这种方法。我希望找到一个解决方案,不涉及有两个图标,或绘图。而且,调整alpha会给人一种“变灰”的好印象,这取决于背景颜色的颜色。
<Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/button_label"
      android:background="@color/my_selector" />