listview item背景设置为透明

来源:互联网 发布:iphone6短信群发软件 编辑:程序博客网 时间:2024/05/16 10:31

转自CSDN博客:http://blog.csdn.net/wangshione/archive/2011/01/24/6161336.aspx

 

在android开发中,listview的默认背景颜色是黑色的,所以在UI设计中,肯定会对它进行美化处理,尤其是在游戏开发中。最近在做用户聊天框的时候遇到一个这样的问题,我把显示用户聊天记录的listview背景设置成白色的,看起来没有什么问题,但是当我滚动滚动条的时候,有内容的listitem全部变成黑色的了,效果很不好。
     google了一下,原因是:默认的ListView的背景是透明的,而ListView的背景是固定不变的,所以当我滚动滚动条的时候,会实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用了一个叫做android:cacheColorHint的属性,在黑色主题下默认的颜色值是#191919,所以就出现了刚才那样的效果。

     解决的办法:如果你只要换背景颜色,就只需将android:cacheColorHint属性设置成你想要的颜色就行了。如果需更换背景图片,则需使用android:background="@drawable/bg"属性,并把android:cacheColorHint设置成(#00000000)透明的就ok了。

或者:

直接上代码了,目标:设置listview背景


Java代码 
lv.setBackgroundResource(R.drawable.listback);  

这样设置可以,但是拖动列表就会发现列表又变成背景黑色的了说明这只设置了列表的背景,但是列表自身的颜色没有改变 

这就要设置列表自身为透明:

 

Java代码 
lv.setCacheColorHint(0);  

参数为int型,如果在xml中设置这个属性则可以使用一般的16进制颜色表示方法,即#00ff00ff之类 

这样就实现了列表的透明处理 
api很丰富,要多多实践啊


Java代码 
lv.setAlwaysDrawnWithCacheEnabled(true);  

这个用于设置拖动之后是否再次显示背景,也就是说设为true后,拖动listview,就不会显示背景图片了(默认显示黑色),除非离开activity(tabactivity之间切换不算)

 

 <color name = "transparent_background" > #50000000 </color> 


#50000000前两位是透明的效果参数从00--ff(透明--不透明),后6位是RGB颜色的设置 

原创粉丝点击