2

我在这样的代码中设置列表视图项目的背景:

RelativeLayout root;
root = (RelativeLayout) convertView.findViewById(R.id.root);
root.setBackgroundColor(-14774017);

这将正确设置背景颜色,但不透明度为 100%。我想设置相对布局背景的透明度。我知道十六进制代码可以在 android 的开头具有 alpha 值 - 例如#AARRGGBB,但是当我使用整数颜色值(例如-14774017)时,如何为背景添加透明度?

4

2 回答 2

2

color int 值包含所有的 alpha、红色、绿色和蓝色分量。

组件存储如下 (alpha << 24) | (红色 << 16) | (绿色 << 8) | 蓝色的。每个组件的范围在 0..255 之间,0 表示对该组件没有贡献,255 表示 100% 的贡献。

该类Color提供了提取或组合这些组件的实用方法。以下代码段将从int用户指定的颜色和 alpha 值创建颜色:

int alpha = 128; //50% transparency
int color = -14774017; //Your color value
int bgColor = Color.argb(alpha, Color.red(color), Color.green(color), Color.blue(color));

root.setBackgroundColor(bgColor);
于 2013-09-16T14:37:43.623 回答
0

创建一个 XML 颜色资源文件:

前任:/res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="list_background">#66A4C739</color>
</resources>

然后在你的FragmentorActivity中,

RelativeLayout root = (RelativeLayout) convertView.findViewById(R.id.root);
root.setBackgroundColor(getResources().getColor(yourpackage.R.color.list_background));

如果您不在 aFragment或 an中执行此操作Activity,则需要 a Context

context.getResources().getColor(yourpackage.R.color.list_background));
于 2013-09-16T14:27:33.287 回答