Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有没有办法设置可绘制的';使用XML的阿尔法?_Android_Drawable_Alpha Transparency - Fatal编程技术网

Android 有没有办法设置可绘制的';使用XML的阿尔法?

Android 有没有办法设置可绘制的';使用XML的阿尔法?,android,drawable,alpha-transparency,Android,Drawable,Alpha Transparency,像它本身一样容易。我想制作一个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

像它本身一样容易。我想制作一个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>


谢谢大家。

注意:这个答案已经过时了。有关如何使用兼容性库解决OP的问题,请参阅。(我会删除此答案,但不会让我删除,因为OP将其标记为解决方案。)

原始答复:


我认为没有办法做到这一点。有一个属性
android:alpha
,但它适用于视图,而不是绘图。它仅在API 11级之后才可用。

我使用可绘图工具实现了同样的功能

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#5000ddff" />
</shape>

这里使用了alpha 50,它设置了不透明度级别。
希望这对你有所帮助,我想你可以创建你自己的drawable,它可以把这个参数作为一个参数。但我从来没有做过这样的事

查看此链接:

如果这是不可能的,你可以用代码来做

以下是我找到的关于它的两个链接,以防您希望改用位图:


手术已经有一段时间了,但我个人发现了一个比建议答案更适合我的解决方案。创建make很容易设置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之间的任何值。请注意,它有点像十六进制颜色值alpha的倒数,例如70%alpha在十六进制中是B3,在位图绘制中是77。

我一直在寻找相同的东西。尽管这是四年前发布的,但这是谷歌搜索该问题时的头条帖子,所以我会在这里回复

这是我的解决方案

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

对于那些与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>


更多信息。

我的目标是让一个按钮以不同的alpha选择和按下状态,但使用相同的(png)资源,并影响尽可能少的文件

我的解决方案类似于在BitmapDrawable中更改alpha,但它是从选择器执行的,因此只影响一个文件

使用位图的着色功能,请记住,着色将为现有像素着色,因此请使用白色。 例如,#80FFFFFF-保持原色,但将alpha减少50% 这也可用于在按下时更改图标的颜色

这是我的可绘制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>

我将以下内容用于自定义单选按钮,当禁用该按钮时,该按钮应为对角删除线


我同意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>



这很有用。将其与图层列表和您自己的可绘制项结合使用,可以为按下的状态创建可绘制。我不明白,如何更改可绘制的alpha?十六进制值成对描述。前2个代表alpha(对于Android来说,有时是最后2个)。接下来的3对表示红-蓝-绿
#5000ddff alpha(50)红(00)蓝(dd)绿(ff)
,不幸的是,这并没有回答OP,这是关于更改可绘图的alpha,而不是颜色。答案是正确的,但十六进制中的50%alpha是256/2=128,因此#80实际,xml中的alpha是浮点型,它应该是介于0.0和1.0之间的值。@liuyong这对于视图可能是正确的,但对于
。设置
的“alpha”的功能是当前未记录的功能,可能有效,也可能无效。该值也不是传统意义上的alpha值,而是它的位置,即不透明度,这就是为什么-如果它碰巧起作用-您会得到一个值为255的完全透明位图和值为0的完全不透明度的原因。@sfera那么在XML中有没有办法做到这一点,还是我们运气不好?@liuyong就Android文档而言,我认为我们运气不好。未记录的alpha属性似乎在android5+上起作用,但如果想要支持早期版本,这将无济于事。您可以生成透明资源或尝试使用图标字体。在
NinePatch
中包装位图似乎也适用于Android 5+,但我还没有在早期版本中对其进行测试。请告诉我,如果你找到另一个选择。这只适用于实际的图像,而不是任何可绘制的(例如颜色)。我仍在努力解决这个问题。运气好吗?用布局XML中的
AppCompatXxxView
替换您的
XxxView
,并遵循@kikettas的建议:我在
内部选择器中使用的是
android:alpha=“0.6”
,但它在API级别20及以下不起作用。请给我推荐一些替代品。我试过这个。不为我工作。在emulator(Nexus 5X API 23)上测试。它在将选择的状态更改为按下的状态后工作。是的,这是正常情况,但我使用了问题中的示例代码。“从API 23开始,项目可以选择定义安卓:alpha属性”这不是只针对颜色而不是可绘制的吗?这里的alpha值不应该在0到1之间吗?
<?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>