发现了一个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. TCP粘包问题解析与解决

    一.粘包分析 作者本人在写一个FTP项目时,在文件的上传下载模块遇到了粘包问题.在网上找了一些解决办法,感觉对我情况都不好用,因此自己想了个比较好的解决办法,提供参考 1.1 粘包现象 在客户端与服务 ...

  2. 访问修饰符 public private protected default

  3. Linux之hosts文件

    一.序言: 今天同事部署环境遇到问题, 原因1:修改了主机名,在/etc/hosts文件中加了3台集群的ip和主机名,但是将默认的前两行也改了,没注意看改了哪里, 现象: 1.zookeeper单台可 ...

  4. echarts使用笔记一:基本属性

    1.包括一些基本的设置 app.title = '坐标轴刻度与标签对齐'; option = { title : { //标题 x : 'center', y : 5, text : '单通趋势图' ...

  5. Hive简单编程实践-词频统计

    一.使用MapReduce的方式进行词频统计 (1)在HDFS用户目录下创建input文件夹 hdfs dfs -mkdir input 注意:林子雨老师的博客(http://dblab.xmu.ed ...

  6. Leaf——美团点评分布式ID生成系统 UUID & 类snowflake

    Leaf——美团点评分布式ID生成系统 https://tech.meituan.com/MT_Leaf.html

  7. IDEA将项目上传至码云/GitHub托管

    怎么将本地的项目放到码云或者GitHub去托管了?(以码云为例) 一.创建远程项目 第一步:点击创建项目 第二步:填写项目相关信息 第三步:复制远程的项目地址,注意:此处码云官方已经给出上传项目方法, ...

  8. redis4.X

    tar -zxvf ****cd /redismakecd /srcmake install vi redis.confdaemonize yes mkdir /usr/local/redis/bin ...

  9. Azure系列2.1.10 —— CloudBlobClient

    (小弟自学Azure,文中有不正确之处,请路过各位大神指正.) 网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习 ...

  10. Angular 基本指令

    <!DOCTYPE html><html ng-app><head lang="en"> <meta charset="UTF- ...