Android中的View对于ScrollBar和Scroll的支持是非常灵活的,不仅仅是UI样式可变,计算参数的方式也是可变的。
在Android中,任何View都可以显示出ScrollBar,唯一的条件是自身高度不足以显示全部内容。
在UI元素上,ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块),这两部分都是可以定制的(指定自定义的drawable),另外ScrollBar的宽度(竖向)或高度(横向)也是可以控制的,相关的控制属性是:
ScrollBar分为竖向的和横向的,也可以强制去掉,控制这一点的属性是:android:scrollbars
对于竖向的ScrollBar,我们还可以控制它是显示在左边还是右边,控制这一点的函数是:setVerticalScrollbarPosition
横向ScrollBar只能显示在下面。
ScrollBar还有淡出效果,在时间参数和是否允许淡出方面,我们是可以控制的:
在ScrollBar淡出之后,ScrollBar一般是完全看不见的,但是我们可以选择Track始终可见:
android:isScrollContainer是一个令人迷惑的属性,设置它或者不设置它,有时并不能带来明显的区别。
如果设置为true且它的子View包含EditText,并且连接到输入法(此时软键盘会弹出),那么软键盘会尽最大可能挤压该View,那样的话,该 View的整个内容都会出现在软键盘之上,而不是部分内容被遮住。但是即使不设置该属性,有时仍然能达到上述效果,这是因为 Android在挤压View的时候,也会考虑其它因素,设置该属性可以在这方面得到一个保证。
下面的问答很好的解释了这个属性的意义和原理:
http://stackoverflow.com/questions/5308247/what-does-androidisscrollcontainer-do
android:scrollbarStyle控制着ScrollBar的显示位置和样式,可取的值如下:inside表示显示在padding区域的内侧,outside表示显示在padding区域的外侧。
Inset表示将自动增加padding以显示ScrollBar(这意味着内容区域将缩小),Overlay表示不会增加padding以显示ScrollBar,而是浮动在内容上面(可能会遮住内容)。
以下是几个自定义方法,View提供了默认实现,具体类还需自己实现,如果有必要的话:
以下方法可以在实现的时候调用:
取自:http://www.cnblogs.com/frydsh/archive/2012/09/18/2691011.html
在Android中,任何View都可以显示出ScrollBar,唯一的条件是自身高度不足以显示全部内容。
在UI元素上,ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块),这两部分都是可以定制的(指定自定义的drawable),另外ScrollBar的宽度(竖向)或高度(横向)也是可以控制的,相关的控制属性是:
- android:scrollbarThumbHorizontal
- android:scrollbarThumbVertical
- android:scrollbarTrackHorizontal
- android:scrollbarTrackVertical
- android:scrollbarSize
对于竖向的ScrollBar,我们还可以控制它是显示在左边还是右边,控制这一点的函数是:setVerticalScrollbarPosition
横向ScrollBar只能显示在下面。
ScrollBar还有淡出效果,在时间参数和是否允许淡出方面,我们是可以控制的:
- android:fadeScrollbars
- android:scrollbarDefaultDelayBeforeFade
- android:scrollbarFadeDuration
- android:scrollbarAlwaysDrawHorizontalTrack
- android:scrollbarAlwaysDrawVerticalTrack
如果设置为true且它的子View包含EditText,并且连接到输入法(此时软键盘会弹出),那么软键盘会尽最大可能挤压该View,那样的话,该 View的整个内容都会出现在软键盘之上,而不是部分内容被遮住。但是即使不设置该属性,有时仍然能达到上述效果,这是因为 Android在挤压View的时候,也会考虑其它因素,设置该属性可以在这方面得到一个保证。
下面的问答很好的解释了这个属性的意义和原理:
http://stackoverflow.com/questions/5308247/what-does-androidisscrollcontainer-do
android:scrollbarStyle控制着ScrollBar的显示位置和样式,可取的值如下:
- insideOverlayinsideInsetoutsideOverlayoutsideInset
Inset表示将自动增加padding以显示ScrollBar(这意味着内容区域将缩小),Overlay表示不会增加padding以显示ScrollBar,而是浮动在内容上面(可能会遮住内容)。
以下是几个自定义方法,View提供了默认实现,具体类还需自己实现,如果有必要的话:
- computeHorizontalScrollExtent
- computeHorizontalScrollOffset
- computeHorizontalScrollRange
- computeVerticalScrollExtent
- computeVerticalScrollOffset
- computeVerticalScrollRange
- computeScroll
- canScrollHorizontally
- canScrollVertically
- awakenScrollBars