zoukankan      html  css  js  c++  java
  • listview中的item滚动变黑的原因和解决办法

    1在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。 

           这是什么原因导致的呢?起初我以为是因为我把背景设置成了白色,然后产生色差导致的,后来查阅资料发现,其实这个要从Listview的效果说起,默认的ListItem背景是透明的,而ListView的背景是固定不变的,所以在滚动条滚动的过程中如果实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用了一个叫做android:cacheColorHint的属性,在黑色主题下默认的颜色值是#191919,所以就出现了刚才的画面,有一半是黑色的,那怎么办呢? 
           如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了,当然为了美化是要牺牲一些效率的。

     
    在代码中设置:
    listView.setCacheColorHint(Color.TRANSPARENT);
     
    列出xml中listview用设置供大家参考:
    <ListView android:id="@+id/listview" android:layout_width="fill_parent"

    android:fadingEdge="none" android:scrollingCache="false"

    android:layout_height="fill_parent" android:divider="@null"

    android:cacheColorHint="#00000000" android:fadeScrollbars="true" />

    其中常用的属性值都有:

    fadingEdge 上下边距阴影 

    scrollingCache 滚动缓存 

    divider分割线 

    fadeScrollbars滚动条自动隐藏

    2item分割线粗细不同的问题。

     

            我们在listview中展示每一个item的时候,有时会遇到每一个列表项之间的分割线粗细不同的原因,明明默认,没有设置任何分割线,可是怎么会一条细一条粗,一条细一条粗的问题呢?

    在xml的listview布局中:android:dividerHeight="1px"(默认设置)  但有的行一个像素有的行两个像素

    代码中去掉各item之间的黑色线条方法

    listView.setDivider(null) ;

    解决办法一:

    将其设为:
    android:divier="#ffdddddd"    灰色(或其他颜色)
    android:dividerHeight="2px"   统一为2像素

    解决办法二:

    在manifes配置文件中加入<uses-sdk android:targetSdkVersion="">的配置,
    如:<uses-sdk android:targetSdkVersion="4" />

    当发现解决办法二的时候,我明白了,或许是模拟器或安卓的版本的问题,于是我把应用程序(2.1)拷贝到真机(2.3.3)安装上,还是默认的listview,不存在线条粗细不一的问题。于是,我就新创建了一个2.3的模拟器,调试安装上应用程序,显示效果和手机一样,所以到现在得出了结论,是2.1版本模拟器显示问题。

    (2.1模拟器显示的问题)

    (2.3的显示效果,线条默认成了灰色,但是仔细看还是有像素粗细的问题,继续研究,如有结论,继续补充上来)。

  • 相关阅读:
    Android上的水果忍者刀锋效果(JAVA实现)
    界址坐标转换器说明
    C# MVC4 执行特性之后不再执行Action
    广西公需科目自动学习
    mvc4 利用filters特性来 实现自己的权限验证 之二
    mvc4 利用filters特性来 实现自己的权限验证 之一
    利用hao123天气插件的地址选择提供的api进行跨域调用实现地址的省 地级市 县 联动选择。
    javascript 判断变量 是否为空null,undefined, 空数组,空对象(空Object),字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为false。
    git使用
    ios微信公众号分享回调事件
  • 原文地址:https://www.cnblogs.com/greywolf/p/2888844.html
Copyright © 2011-2022 走看看