十一月 | ||||||
---|---|---|---|---|---|---|
日 | 一 | 二 | 三 | 四 | 五 | 六 |
27 | 28 | 29 | 30 | 31 | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Android里透明的ListView
发现了一个list滚动时,某item背景透明的问题。网上搜索一下,发现有很多人在问list背景黑色的问题,交流中给出的解决方案基本上很统一。
先是解释问题产生的原因是Android对list的滚动做了显示优化,用写在该list的layout文件中的android:cacheColorHint颜色值与item背景混合,黑色主题下该颜色值默认为#FF191919,于是背景黑了。
解决方案是关掉优化。怎么关?有说把android:cacheColorHint设置为"@android:color/transparent",也有说把"@android:color/transparent"改为"#00000000"。
其实这个“关”,就是把那个颜色设置为透明。当然,设置成与背景相同的颜色也可以。或者设置成"@null"。可参考这篇文章:http://yuanzhifei89.iteye.com/blog/973724
稍微努点力就能搜索到Romain Guy的一篇博客,Romain是Google的Android开发工程师,负责图形和动画相关的东西,据说ListView就是他整的。
他的这篇博客叫“Why is my list black? An Android optimization”,说的就是这个事。到底做了怎样的优化,这个现象是怎么产生的,文章里说得比较清楚了。文末也给出了解决方案,这是最权威的解答了。
但是,我所搜到的所有的讨论,和我遇到的情况还不大一样。
看上去,各种讨论里说的是似乎是整个list背景黑掉或者透明了,或者至少是除了当前选中项之外的其他所有item的背景黑掉或者透明掉。
我遇到的是,某一个item的背景透明了。出状况的item比较随机。
listview的layout文件中,android:cacheColorHint已经设置为"@android:color/transparent",改为"#00000000"依然如此。
几乎无计可施的情况下,领会Romain说的优化思路,尝试把android:cacheColorHint设置为listview的背景色。
可是,我们给listview贴图作为背景的,而android:cacheColorHint不支持设置资源。
所以,尝试给它一个接近背景色贴图颜色的不透明色值,还好,这张图不是五彩斑斓的,虽有渐进色,但还是比较难一眼辨明。
好吧,算是临时解决了。
我遇到的这个状况,在我测试过的不多的手机和平板中,只在Lenovo S890上出现。有谁知道究竟是为什么么?
[2013-06-19 Edit] 几天后再次看这个问题,有一点新发现,对于背景贴图的listview,无法设置cacheColorHint颜色值,可以用这个方法关闭该优化。
android:scrollingCache="false"
默认是"true",打开优化可以使render更快,但是需要更多的内存。测试一下关掉优化是否可以接受。
2022年9月16日 22:37
exposed to all chapters of Rimghim in the CBSE Board Class Hindi Sample Paper Pdf. The practise question paper was created by subject matter specialists from the board and is topic-wide to all examinations administered by the board. CBSE Class 3 Hindi Question Paper Get better grades by downloading and using the chapter-by-chapter practise test with recommended answers.
2023年1月06日 22:42
ListView is a view that shows a list of items. Android provides a number of ways to create a transparent cbd benefits ListView. One way is to set the background color of the ListView to a transparent color. Another way is to make the ListView background transparent and set the background color of the items to a transparent color.
2024年2月22日 15:31
I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.