Android:如何指定 <layer-list> 的不透明度?

Posted

技术标签:

【中文标题】Android:如何指定 <layer-list> 的不透明度?【英文标题】:Android: How to specify the opacity of a <layer-list>? 【发布时间】:2013-01-11 14:01:56 【问题描述】:

我希望我的 LayerList 的不透明度为 80,所以我写道:

<layer-list
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:opacity="80">

但我明白了:

Error: Integer types not allowed (at 'opacity' with value '80')

如何指定不透明度?

【问题讨论】:

如果你能那样做 - 我不确定图层列表。这将被称为 android:alpha 【参考方案1】:

android:opacity 仅支持 layer-list 中的 translucent|opaque|transparent 值。

顺便问一下,你的要求是什么?

更新答案: 要将 opacity/less-visible 设置为 80%,您需要设置为您的视图

android:alpha="0.8"

【讨论】:

要求:让图片不那么显眼(是背景图片,只是为了风格) @NicolasRaoul 抱歉没有回复你。根据我的理解,您正在使用您创建的 layerList 作为 ImageView 或其他使用 @drawable/layer_list 的视图中的背景可绘制对象。要将不透明度/图像不那么可见设置为 80%,您需要设置 android:alpha="0.8" (我同时切换到另一个解决方案,所以我不会很快测试这个,但我接受,因为它是唯一的答案)【参考方案2】:

要提供半透明效果,比如 50% 的不透明度,请使用:

Drawable d = new ColorDrawable(Color.BLACK); d.setAlpha(130); mDialog.getWindow().setBackgroundDrawable(d);

“130”可以更改 (0-255) 以获得所需的不透明度。

【讨论】:

【参考方案3】:

我认为问题是关于在&lt;layer-list&gt; 中设置单个项目的不透明度,而不是以编程方式设置整个图像。

如果您已经知道颜色,请使用组合十六进制 RGBA 代码,例如:

&lt;solid android:color="#80FF0000" /&gt;

将颜色设置为红色 (0xFF0000),不透明度为 0x80。

同样的事情也适用于其他一些项目。例如中风

&lt;stroke android:color="#6000FF00" android:width="20dp" /&gt;

这将创建一个 0x60 不透明度的 20dp 厚的绿色描边。

此外,如果您想以编程方式进行操作,即修改特定项目的 alpha 而不是整个可绘制对象,请使用新的资源 id (android:id="@+id/...")项目并访问它。不过我还没有碰巧验证这部分。

【讨论】:

以上是关于Android:如何指定 <layer-list> 的不透明度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XML 中为字体使用指定的权重

如何将 EditText inputType 指定为数字和密码?

Android分享中,如何过滤指定的应用,并且对不同的分享方式发送不同的内容?

android中如何利用view视图添加一条直线

Android Gradle 指定 Module 打包

如何在XML中为视图指定宽度和高度的百分比?