我想用下一个想法保存应用空间。但我不确定是否可能。
我想要选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/arrow_forward" android:state_enabled="true" />
<item android:drawable="@drawable/arrow_forward_disabled" android:state_enabled="false"/>
</selector>
其中arrow_forward
是png图像,而arrow_forward_disabled
是相同的图像,但不透明度为70%。我试图通过layer-list
绘制来实现它,但没有成功。有解决方案吗?
答案 0 :(得分:5)
无法在xml中应用不透明度。只能使用两张图片。
-
您正在使用PNG文件,您必须创建具有不同不透明度的2个png。
1ºPNG - 启用。 100%不透明度。
2ºPNG - 已禁用。 70%不透明度。
在此之后,您需要创建一个具有两种不同状态的选择器XML:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:drawable="@drawable/btn_disabled" />
<item android:drawable="@drawable/btn_active" />
</selector>
您还可以使用ARGB的alpha(#AARRGGBB)使用具有不同不透明度的形状按钮。示例:#80FFFFFF(50%不透明度) (Source)
示例:
启用:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="20dp"/>
<solid android:color="#002aff" />
</shape>
已停用(70%不透明度:#b3002aff):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="20dp"/>
<solid android:color="#b3002aff" />
</shape>
答案 1 :(得分:1)
如果你使用的是ShapeDrawable而不是PNG,你可以影响你用来设置不同不透明度的颜色,我将概述一些选项:
这不适用于不透明度,但您可以使用存在的API应用滤色器(这可能是基于颜色的效果的变化,但仍然不允许您更改不透明度你的PNG) Color Filter API
创建自定义PNG,每个PNG都具有您需要的不透明度
我认为(与其他答案一样)选项#3最简单,并且效果最好。
最重要的是,您无法使用XML更改PNG资源的不透明度,您可以创建一个Drawable(可能将其用作PNG的背景),并且您可以使用它更改其不透明度色彩资源定义。