在代码中设置listview项的透明度

时间:2013-09-16 14:16:07

标签: android listview

我在这样的代码中设置listview项目的背景:

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

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

2 个答案:

答案 0 :(得分:2)

color int值包含所有alpha,red,green和blue组件。

  

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

Color类提供了实用程序方法来提取或组合这些组件。以下代码段将根据用户指定的颜色和Alpha值创建颜色int

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);

答案 1 :(得分:0)

创建XML颜色资源文件:

ex:/res/values/colors.xml

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

然后在FragmentActivity

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

如果您未在FragmentActivity中执行此操作,则需要Context

context.getResources().getColor(yourpackage.R.color.list_background));