发现了一个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更快,但是需要更多的内存。测试一下关掉优化是否可以接受。

Android里透明的ListView的更多相关文章

  1. [Android]使用RecyclerView替代ListView(三)

    以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4268097.html  这次来使用RecyclerView实现Pinn ...

  2. 注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式

    注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式 这个坑,必须要注意呀, 比如在用ListView的时候,如果在List_ ...

  3. android 开发 实现一个ListView套嵌GirdView的滚动布局

    效果图 实现思维: 首先要处理管理好需要导入的数据,我们这里创建class来处理这些数据并且便于管理它们. 创建一个主activity的布局,里面需要一个ListView控件. 创建一个class继承 ...

  4. Android控件之ListView的使用

    ListView是Android当中一个非常常用的数据显示控件. 第一种可以使用List<HashMap<String , Object>>,作为适配器的数据源来显示要显示的数 ...

  5. [android]完美的解决方案ListView加载网络图片反弹问题

    为什么 先说为什么有照片反弹. 使用convertView对ListView的每一个item优化,item的复用能够有效减少内存的占用.使ListView滑动更为流畅. 但会带来一个问题,当最顶部的i ...

  6. 透明的LISTVIEW

    .NET就是封装的太密了,有时很多时候让我们反而更麻烦,特别是COPY不到的时候,又不懂自已想的话,说土一点就是死路一条, 记得以前经常用一句话,C++支持,可C#他不支持啊!就这样安慰自已 其实做多 ...

  7. Android 实现QQ扩展listview(expandlistview)

    Android 实现QQ扩展listview(expandlistview) <?xml version="1.0" encoding="utf-8"?& ...

  8. Android 自定义Adapter 但listview 只显示第一条数据

    <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content ...

  9. Android中动态更新ListView(转)

    在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中.实现步骤:调用ListView的setOnSc ...

随机推荐

  1. MySQL 遇到的问题以及解决方案

    Problem: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysq ...

  2. Nginx负载均衡各种配置方式

    Nginx负载均衡 - 小刚qq - 博客园http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html Module ng ...

  3. centos 6.5 查看时区和设置时区

    centos6.x 和centos7.x在时区方面有点差距,本文是针对centos6.x进行介绍. 其实在我的一个博文里,在安装系统的时候就可以进行时区的设置,本文介绍的是用命令进行时区查看和设置. ...

  4. vue-router路由懒加载(解决vue项目首次加载慢)

    懒加载:----------------------------------------------------? 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单 ...

  5. Linux基础学习笔记2-文件管理和重定向

    本节内容 1)文件系统结构元素 2)创建和查看文件 3)复制.转移和删除文件 4)软和硬链接 5)三种I/O设备 6)把I/O重定向至文件 7)使用管道 文件系统和结构 文件系统 文件和目录被组织成一 ...

  6. CDH 6.0.1 集群搭建 「After install」

    集群搭建完成之后其实还有很多配置工作要做,这里我列举一些我去做的一些. 首先是去把 zk 的角色重新分配一下,不知道是不是我在配置的时候遗漏了什么在启动之后就有报警说目前只能检查到一个节点.去将 zk ...

  7. cmd & tree & bash

    cmd & tree & bash bug E: Unable to locate package tree solution # 1. update $ sudo apt-get u ...

  8. Python包的相对导入时出现问题解决

    资料参考: https://www.cnblogs.com/ArsenalfanInECNU/p/5346751.html 在python导入包,如下: from .units import * 经常 ...

  9. js4

    数组的解构赋值: 位置对象的解构赋值: 名称 // {}在解构赋值的时候,不能出现在一行的最前面,否则js解析器会把他当成一个代码块,加()({a, b} = obj),告诉他这个仅仅是一个解构语句 ...

  10. 华硕X99-A II 安装使用 志强 XEON E5-1603 v4

    刚开始无法启动,Debug灯的数字不停的轮回变换,后来把XMP开关关闭后,就能正常启动了.如果不行,就多关机几次,一般3次以上应该就可以启动开了.之后就能正常使用了.