• listview 之XML属性


      <ListView
                android:id="@id/list_temple_container"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#ffffffff"
                android:cacheColorHint="#00000000"  
                android:divider="@drawable/list_divider"
                android:dividerHeight="1dip"
                android:fastScrollEnabled="false"
                android:headerDividersEnabled="true"
                android:listSelector="#00000000"
                android:scrollingCache="true" />

    list_divider

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle" >
    
        <gradient
            android:angle="0"
            android:centerColor="#ffe6e6e6"
            android:endColor="#ffe6e6e6"
            android:height="1px"
            android:startColor="#ffe6e6e6" />
    
    </shape>

    android:divider="@drawable/list_divider"  item之间的分割线

    android:dividerHeight="1dip"  item之间的分割线高度
    android:fastScrollEnabled="false"
    android:headerDividersEnabled="true"

    android:cacheColorHint="#00000000" 系统切换item时的缓存色

    android:scrollbars="none" 不显示滚动条
    android:listSelector="#00000000"选中时背景色

    通过设置这样的属性可以做出更加美观的列表

    首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false

    android:stackFromBottom="true"    

             

    第二是transciptMode属性,需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。
     android:transcriptMode="alwaysScroll"    

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

    如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了

    第四divider属性,该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线

     android:divider="@drawable/list_driver"  其中  @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置为android:divider="@drawable/@null" 就可以了

    第五fadingEdge属性,上边和下边有黑色的阴影

    android:fadingEdge="none" 设置后没有阴影了~

     第六scrollbars属性,作用是隐藏listView的滚动条,

    android:scrollbars="none"与setVerticalScrollBarEnabled(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏

    第七fadeScrollbars属性,android:fadeScrollbars="true"  配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。

      android:scrollbars="vertical"

      android:background="@null"
      android:headerDividersEnabled="true" 
      android:listSelector="@drawable/x_room_listitem"

    这些个呢???

    android:listSelector="@drawable/x_room_listitem" 设置选中颜色

    android:footerDividersEnabled 设成flase时,此ListView将不会在页脚视图前画分隔符。此属性缺省值为true

    android:headerDividersEnabled设成flase时,此ListView将不会在页眉视图前画分隔符。此属性缺省值为true

    若 有别的会把焦点弄走就 点不到了 那要先把那个的焦点给false点 或者

    如果是通过ListAdapter返回的view,可以给该view添加属性
    android:descendantFocusability="blocksDescendants"
    也可在代码中设置此属性,这样就可以将view中子控件的事件阻止,然后ListView就会响应了。

     将ListView的背景色设置为白色,ListIView控件上下滑动时,背景就会变为黑色,但是图片会正常显示,这怎么解决呢?网上搜了一下,

    如果大家在非黑色背景下使用ListView控件时,Android默认可能在滚动ListView时这个列表控件的背景突然变成黑色。这样可能导致程序的黑色的背景和主程序的主题既不协调。解决的方法Google在设计Android时也考虑了,在Layout的ListView中加入 android:cacheColorHint="#00000000" 的属性即可,或者是调用ListView的setCacheColorHint(0);方法。

     在ListView的item项里使用CheckBox或者Button时,OnItemClickListener无响应的问题

    在Android软件设计与实现中我们通常都会使用到ListView这个控件,系统有一些预置的Adapter可以使用,例如SimpleAdapter和ArrayAdapter,但是总是会有一些情况我们需要通过自定义ListView来实现一些效果,那么在这个时候,我们通常会碰到自定义ListView无法选中整个ListViewItem的情况,也就是无法响应ListView的onItemClickListener中的onItemClick()方法,

    我们看到了一行代码定义的变量的意思是“当前View将屏蔽他所有子控件的Focus状态,即便这些子控件是可以Focus的”,其实这段话的意思就是这个变量代表着当前的View将不顾其子控件是否可以Focus自身接管了所有的Focus,通常默认能获得focus的控件有Button,Checkable继承来的所有控件,这就意味着如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了,也就会响应onItemClickListener中的onItemClick()方法,然而将ListView的Item Layout的子控件focusable属性设置为false有点繁琐,我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendants”即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItenClick()方法了。例如我的ListViw的每个item项是RelativeLayout,那么我就可以设置RelativeLayout的android:descendantFocusability=”blocksDescendants”即可。注意:这个属性不能设置给ListView,设置了也不起作用。

    第二种方法是将ListView子控件中的CheckBox或者ImageButton,Button的android:focusable="false"属性即可。

    第三种方法是不适用CheckBox,或者Button,使用TextView,等等完全可以代替Button。

  • 相关阅读:
    【LeetCode-动态规划】编辑距离
    【LeetCode-栈】计算器
    【LeetCode-栈】字符串解码
    【LeetCode-数组】缺失的第一个正数
    【LeetCode-查找】寻找重复数
    【LeetCode-堆】丑数
    【LeetCode-堆】数据流中的第K大元素
    【LeetCode-排序】根据身高重建队列
    立项与启动
    JS中match方法探究
  • 原文地址:https://www.cnblogs.com/xiaoli3007/p/4210695.html
Copyright © 2020-2023  润新知