很容易就像自己一样。我想制作一个alpha按钮,这样就可以选择绘图:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Play/Pause -->
<item android:state_selected="false" android:drawable="@drawable/item" />
<item android:state_selected="true" android:drawable="@drawable/item" />
</selector>
我想做这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Play/Pause -->
<item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" />
<item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" />
</selector>
谢谢大家。
答案 0 :(得分:49)
自OP以来已经有一段时间了,但我个人发现了一个比建议的答案更好的解决方案。创建BitmapDrawable品牌很容易设置alpha:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/your_drawble"
android:alpha="77">
</bitmap>
Alpha可以是0到255之间的任何值。请注意,它是HEX颜色值alpha的倒数,例如70%alpha在HEX中为B3,在BitmapDrawable中为77.
答案 1 :(得分:42)
我使用drawable
实现了相同的目标<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#5000ddff" />
</shape>
这里使用了alpha 50,它设置了不透明度级别。 希望有所帮助
答案 2 :(得分:14)
我一直在寻找同样的事情。即使这是四年前发布的,这是谷歌搜索问题的最高职位,所以我会在这里回复。
这是我的解决方案
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<bitmap android:alpha="@integer/not_pressed_alpha" android:src="@drawable/item"/>
</item>
<item android:state_pressed="true" android:drawable="@drawable/item" />
</selector>
答案 3 :(得分:10)
对于那些与OP有同样问题的人,AppCompat现在允许你设置'alpha'参数,正如他在目标代码中所希望的那样:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Play/Pause -->
<item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" />
<item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" />
</selector>
更多信息here。
答案 4 :(得分:9)
我认为没有办法做到这一点。有一个属性android:alpha
,但它适用于视图,而不是drawable。它仅在API级别11之后才可用。
答案 5 :(得分:3)
我的目标是让一个按钮选中并按下不同的alpha状态 - 但使用相同的(png)资源并尽可能少地影响文件。
我的解决方案类似于改变BitmapDrawable中的alpha - 但它是从选择器执行的,所以只有一个文件受到影响。
使用Bitmap的色调功能,请记住色调会为现有像素着色,因此请使用白色。 例如,#80FFFFFF - 保持颜色为原始但减少50%的alpha 这也可用于在按下时更改图标的颜色。
这是我的可绘制XML文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<bitmap
android:src="@drawable/ic_camera"
android:tint="#80FFFFFF">
</bitmap>
</item>
<item android:state_pressed="true">
<bitmap
android:src="@drawable/ic_camera"
android:tint="#80FFFFFF">
</bitmap>
</item>
<item>
<bitmap
android:src="@drawable/ic_camera">
</bitmap>
</item>
</selector>
答案 6 :(得分:1)
我将以下内容用于自定义单选按钮,该按钮在禁用时应沿对角线删除。
Example Image of 5 radio buttons where 4 of them are enabled
<item android:state_enabled="false">
<layer-list>
<item>
<shape android:shape="rectangle">
<size
android:height="35dp"
android:width="35dp"/>
<stroke
android:color="@color/someGrey"
android:width="1dp"/>
<corners android:radius="1dp"/>
</shape>
</item>
<item>
<rotate
android:fromDegrees="135"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="135">
<shape android:shape="line">
<stroke
android:color="@color/someGrey"
android:width="1dp"/>
</shape>
</rotate>
</item>
</layer-list>
</item>
答案 7 :(得分:0)
我认为您可以创建自己的drawable,可以将此参数作为参数。我从来没有做过这样的事情。
查看此链接:
How to set alpha value for drawable in a StateListDrawable?
如果不可能,您可以随时在代码中进行...
这里有2个我发现的链接,如果你想改用位图:
答案 8 :(得分:0)
我同意Kasium sugest,所以在某些Android版本中,Alpha的规范化程度为百分比。
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/your_drawble"
android:alpha="0.5">
</bitmap>