zoukankan      html  css  js  c++  java
  • 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更快,但是需要更多的内存。测试一下关掉优化是否可以接受。

  • 相关阅读:
    Linux:运维基础网络知识(下)
    Linux:运维基础网络知识(上)
    Linux :linux系统磁盘(fdisk、partprobe、mkfs、mount、df、sort、swap、inode、block)
    Linux:操作系统用户权限(useradd、usermod、userdel、groupadd、groupmod、chown、id、uid、sudo)
    Linux:三剑客之 awk
    Linux:三剑客之 sed
    Linux :和时间相关的命令(date,ntpdate)
    Linux:文件属性信息-软硬链接数(ln)
    Linux:文件属性信息-(inode、block)
    Linux:系统中如何对文件进行压缩处理(tar)
  • 原文地址:https://www.cnblogs.com/aikongmeng/p/3697331.html
Copyright © 2011-2022 走看看