http://gundumw100.iteye.com/blog/1169065
ListView 自定义滚动条样式:
<ListView
android:id=
"@android:id/list"
android:layout_width=
"match_parent"
android:layout_height=
"0dip"
android:layout_weight=
"1"
android:stackFromBottom=
"true"
//从下开始显示条目
android:transcriptMode=
"normal"
android:fastScrollEnabled=
"true"
android:focusable=
"true"
android:scrollbarTrackVertical=
"@drawable/scrollbar_vertical_track"
android:scrollbarThumbVertical=
"@drawable/scrollbar_vertical_thumb"
/>
/>
//scrollbar_vertical_track,crollbar_vertical_thumb自定义的xml文件,放在Drawable中,track是指长条,thumb是指短条
去掉ListView Selector选种时黄色底纹一闪的效果:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android= "http://schemas.android.com/apk/res/android" >
<solid
android:color=
"@android:color/transparent"
/>
<corners
android:radius=
"0dip"
/>
</shape>
//listview.setSelector(R.drawable.thisShape);
或者还有一种办法:<shape xmlns:android= "http://schemas.android.com/apk/res/android" >
</shape>
//listview.setSelector(R.drawable.thisShape);
在Adapter中重写public boolean isEnabled(int position)方法,将其返回false就可以了,推荐采用此种办法,具体见 http://gundumw100.iteye.com/admin/blogs/850654
public
boolean
isEnabled(
int
position)
{
// TODO Auto-generated method stub
return
false;
}
}
ListView几个比较特别的属性
第一是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"与setVerticalScrollBarEnab led(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏
第七fadeScrollbars属性,android:fadeScrollbars="true" 配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。
第一是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"
第五fadingEdge属性,上边和下边有黑色的阴影android:fadingEdge="none" 设置后没有阴影了~
第六scrollbars属性,作用是隐藏listView的滚动条,android:scrollbars="none"与setVerticalScrollBarEnab
第七fadeScrollbars属性,android:fadeScrollbars="true"
如何让ListView自动滚动?
注意stackFromBottom以及transcriptMode这两个属性。类似Market客户端的低端不断滚动。
注意stackFromBottom以及transcriptMode这两个属性。类似Market客户端的低端不断滚动。
<
ListView
android:
id
=
"listCWJ"
android:
layout_width
=
"fill_parent"
android:
layout_height
=
"fill_parent"
android:
stackFromBottom
=
"true"
android:
transcriptMode
=
"alwaysScroll"
/>
/>
如何让ListView中TextView的字体颜色跟随焦点的变化?
我们通常需要ListView中某一项选中时,他的字体颜色和原来的不一样。 如何设置字体的颜色呢?在布局文件中TextColor一项来设置颜色,但是不是只设置一种颜色,而是在不同的条件下设置不同的颜色: 下面是个例子:
我们通常需要ListView中某一项选中时,他的字体颜色和原来的不一样。 如何设置字体的颜色呢?在布局文件中TextColor一项来设置颜色,但是不是只设置一种颜色,而是在不同的条件下设置不同的颜色: 下面是个例子:
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android= "http://schemas.android.com/apk/res/android" >
<item android:state_enabled= "false" android:color= "@color/orange" ></item>
<item android:state_window_focused= "false" android:color= "@color/orange" ></item>
<item android:state_pressed= "true" android:color= "@color/white" ></item>
<item android:state_selected= "true" android:color= "@color/white" ></item>
<item android:color= "@color/orange" ></item>
</selector>
<!--在获取焦点或者选中的情况下设置为白色,其他情况设置为橘黄色。 -->
<selector xmlns:android= "http://schemas.android.com/apk/res/android" >
<item android:state_enabled= "false" android:color= "@color/orange" ></item>
<item android:state_window_focused= "false" android:color= "@color/orange" ></item>
<item android:state_pressed= "true" android:color= "@color/white" ></item>
<item android:state_selected= "true" android:color= "@color/white" ></item>
<item android:color= "@color/orange" ></item>
</selector>
<!--在获取焦点或者选中的情况下设置为白色,其他情况设置为橘黄色。
ListView不通过notifyDataSetChanged()更新指定的Item
Listview一般大都是通过notifyDataSetChanged()來更新listview,但通过notifyDataSetChanged()会把界面上现实的的item都重绘一次,这样会影响ui性能。
可以通过更新指定的Item提高效率,伪代码如下:
Listview一般大都是通过notifyDataSetChanged()來更新listview,但通过notifyDataSetChanged()会把界面上现实的的item都重绘一次,这样会影响ui性能。
可以通过更新指定的Item提高效率,伪代码如下:
private
void
updateView(
int
itemIndex
){
int
visiblePosition
=
yourListView
.
getFirstVisiblePosition();
View
v
=
yourListView
.
getChildAt(
itemIndex
-
visiblePosition);
//Do something fancy with your listitem view
TextView
tv
= (
TextView)
v
.
findViewById(
R
.
id
.
sometextview);
tv
.
setText(
"Hi! I updated you manually");
}
}
快速定位
statusListView.setSelection(0);
如果存在setAdapter或adatper更新:如下
statusAdapter.notifyDataSetChanged();
那么就需要将setSelection放在其后面
滚动到某个位置
使用statusListView.scrollTo(x, y)滚动到某个位置,如scrollView.scrollTo(0, 0)表示滚动到顶部
如果刚刚更新adapter,则调用statusListView.setSelection(0)滚动到顶部;
listView滚动轴图片更改?
android:scrollbarThumbHorizontal="" //滚动轴游标
android:scrollbarTrackVertical="" //滚动轴背景、
引用的是9patch图片
android:scrollbarThumbHorizontal="" //滚动轴游标
android:scrollbarTrackVertical="" //滚动轴背景、
引用的是9patch图片