Android中的View对于ScrollBar和Scroll的支持是非常灵活的,不仅仅是UI样式可变,计算参数的方式也是可变的。
在Android中,任何View都可以显示出ScrollBar,唯一的条件是自身高度不足以显示全部内容。
在UI元素上,ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块),这两部分都是可以定制的(指定自定义的drawable),另外ScrollBar的宽度(竖向)或高度(横向)也是可以控制的,相关的控制属性是:
滚动条不显示:android:scrollbars="none"
滚动条恒显示:android:fadeScrollbars="false"
设置水平滚动条的drawable(如颜色):android:scrollbarThumbHorizontal
设置垂直滚动条的drawable(如颜色):android:scrollbarThumbVertical
设置水平滚动条背景(轨迹)的色drawable(如颜色):android:scrollbarTrackHorizontal
设定滚动条宽度:android:scrollbarSize
ScrollBar分为竖向的和横向的,也可以强制去掉,控制这一点的属性是:android:scrollbars
对于竖向的ScrollBar,我们还可以控制它是显示在左边还是右边,控制这一点的函数是:setVerticalScrollbarPosition
ListView:
第一
stackFromBottom属性, 设置该属性之后你做好的列表在显示的时候会显示列表的最后几条信息,滚动条也会滚到最下面,值为true和false
android:stackFromBottom="true" 显示最后几条,默认为false。
第二
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" 就可以了(原著是错误的,在eclipse @drawable/@null下无法编译,应该改为android:divider="#00000000")
第五
fadingEdge属性,上边和下边有黑色的阴影
android:fadingEdge="none" 设置后没有阴影了
第六
scrollbars属性,作用是隐藏listView的滚动条,
android:scrollbars="none"与setVerticalScrollBarEnabled(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏
第七
fadeScrollbars属性,android:fadeScrollbars="true" 配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。
以下是我自己添加的
第八
android:scrollbarThumbHorizontal 设置水平滚动条的drawable(如颜色)。
android:scrollbarTrackHorizonta 设置水平滚动条背景(轨迹)的色drawable(如颜色)。
第九
android:scrollbarThumbVertical 设置垂直滚动条的drawable(如颜色)。
android:scrollbarTrackVertical 设置垂直滚动条背景(轨迹)的drawable。
Android上有一些控件,像listview, ScrollView滚动的时候右侧会出现一个滚动条,如何隐藏掉呢......
代码中:
setScrollbarFadingEnabled(true);//不活动的时候隐藏,活动的时候显示
setVerticalScrollBarEnabled(true);//不活动的时候隐藏,活动的时候也隐藏
xml中配置:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<TextView
android:id="@+id/showhtml"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</ScrollView>
其中 android:scrollbars="none"与setVerticalScrollBarEnabled(true);效果一样。
修改ScrollView滚动条样式
在ListView/ScrollView/RecyclerView中添加属性:
<!-- 情况A :垂直滚动条-->
android:scrollbars="vertical"
android:scrollbarTrackVertical="@drawable/xxx_vertical_track"
android:scrollbarThumbVertical="@drawable/xxx_vertical_thumb"
<!-- 情况B :水平滚动条-->
android:scrollbars="horizontal"
android:scrollbarTrackHorizontal="@drawable/xxx_horizontal_track"
android:scrollbarThumbHorizontal="@drawable/xxx_horizontal_thumb"
<!-- 其他通用的属性 -->
<!-- 1.定义滚动条的样式和位置 -->
android:scrollbarStyle="outsideInset"
<!-- 2.定义滚动条的大小,垂直时指宽度,水平时指高度 -->
android:scrollbarSize="4dp"
即scrollbaTrackxxx,scrollbarThumbxxx自定义的 xml 文件,放在Drawable中,track是指长条,thumb是指短条,然后再 xml 中定义短条和长条的样式。
需要注意
其中,scrollbaTrackxxx、scrollbarThumbxxx可以使用:
- Shape自定义 Drawable
- 图片
- .9.png
- @color/xxx的方式使用颜色值
不可以直接使用#xxxxxx颜色值
android:scrollbarStyle
android:scrollbarStyle可以定义滚动条的样式和位置,可选值有insideOverlay、insideInset、outsideOverlay、outsideInset四种。
其中inside和outside分别表示是否在 view 的 padding 区域内,overlay和inset表示覆盖在 view 上或是插在 view 后面,所以四种值分别表示: