Android中的View对于ScrollBar和Scroll的支持是非常灵活的,不仅仅是UI样式可变,计算参数的方式也是可变的。
     在Android中,任何View都可以显示出ScrollBar,唯一的条件是自身高度不足以显示全部内容。

     在UI元素上,ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块),这两部分都是可以定制的(指定自定义的drawable),另外ScrollBar的宽度(竖向)或高度(横向)也是可以控制的,相关的控制属性是:


android:scrollbarThumbHorizontal
android:scrollbarThumbVertical
android:scrollbarTrackHorizontal
android:scrollbarTrackVertical
android:scrollbarSize


    ScrollBar分为竖向的和横向的,也可以强制去掉,控制这一点的属性是:android:scrollbars
    对于竖向的ScrollBar,我们还可以控制它是显示在左边还是右边,控制这一点的函数是:setVerticalScrollbarPosition
    横向ScrollBar只能显示在下面。

    ScrollBar还有淡出效果,在时间参数和是否允许淡出方面,我们是可以控制的:


android:fadeScrollbars
android:scrollbarDefaultDelayBeforeFade
android:scrollbarFadeDuration


    在ScrollBar淡出之后,ScrollBar一般是完全看不见的,但是我们可以选择Track始终可见:


android:scrollbarAlwaysDrawHorizontalTrack
android:scrollbarAlwaysDrawVerticalTrack


    android:isScrollContainer是一个令人迷惑的属性,设置它或者不设置它,有时并不能带来明显的区别。如果设置为true且它的子View包含EditText,并且连接到输入法(此时软键盘会弹出 ),那么软键盘会尽最大可能挤压该View,那样的话,该View的整个内容都会出现在软键盘之上,而不是部分内容被遮住。但是即使不设置该属性,有时仍然能达到上述效果,这是因为 Android在挤压View的时候,也会考虑其它因素,设置该属性可以在这方面得到一个保证。

    android:scrollbarStyle控制着ScrollBar的显示位置和样式,可取的值如下:


insideOverlay
insideInset
outsideOverlay
outsideInset


    inside表示显示在padding区域的内侧,outside表示显示在padding区域的外侧。
    Inset表示将自动增加padding以显示ScrollBar(这意味着内容区域将缩小),Overlay表示不会增加padding以显示ScrollBar,而是浮动在内容上面(可能会遮住内容)。

    以下是几个自定义方法,View提供了默认实现,具体类还需自己实现,如果有必要的话:




computeHorizontalScrollExtent
computeHorizontalScrollOffset
computeHorizontalScrollRange
computeVerticalScrollExtent
computeVerticalScrollOffset
computeVerticalScrollRange
computeScroll




    以下方法可以在实现的时候调用:


canScrollHorizontally
canScrollVertically
awakenScrollBars


  
  
   
   
    
    附 layout.xml的一些属性值
   
   
  
  
  
  
  
  
  
  
   
   
    
    第一类:属性值 true或者 false
   
   
   
   
    
    android:layout_centerHrizontal 水平居中
   
   
   
   
    
    android:layout_centerVertical 垂直居中
   
   
   
   
    
    android:layout_centerInparent 相对于父元素完全居中
   
   
   
   
    
    android:layout_alignParentBottom 贴紧父元素的下边缘
   
   
   
   
    
    android:layout_alignParentLeft 贴紧父元素的左边缘
   
   
   
   
    
    android:layout_alignParentRight 贴紧父元素的右边缘
   
   
   
   
    
    android:layout_alignParentTop 贴紧父元素的上边缘
   
   
   
   
    
    android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
   
   
   
   
    
    android:layout_alignParentStart紧贴父元素结束位置开始
   
   
   
   
    
    android:layout_alignParentEnd紧贴父元素结束位置结束
   
   
   
   
    
    android:animateLayoutChanges布局改变时是否有动画效果
   
   
   
   
    
    android:clipChildren定义子布局是否一定要在限定的区域内
   
   
   
   
    
    android:clipToPadding定义布局间是否有间距
   
   
   
   
    
    android:animationCache定义子布局也有动画效果
   
   
   
   
    
    android:alwaysDrawnWithCache定义子布局是否应用绘图的高速缓存
   
   
   
   
    
    android:addStatesFromChildren定义布局是否应用子布局的背景
   
   
   
   
    
    android:splitMotionEvents定义布局是否传递touch事件到子布局
   
   
   
   
    
    android:focusableInTouchMode定义是否可以通过touch获取到焦点
   
   
   
   
    
    android:isScrollContainer定义布局是否作为一个滚动容器 可以调整整个窗体
   
   
   
   
    
    android:fadeScrollbars滚动条自动隐藏
   
   
   
   
    
    android:fitsSystemWindows设置布局调整时是否考虑系统窗口(如状态栏)
   
   
   
   
    
    android:visibility定义布局是否可见
   
   
   
   
    
    android:requiresFadingEdge定义滚动时边缘是否褪色
   
   
   
   
    
    android:clickable定义是否可点击
   
   
   
   
    
    android:longClickable定义是否可长点击
   
   
   
   
    
    android:saveEnabled设置是否在窗口冻结时(如旋转屏幕)保存View的数据
   
   
   
   
    
    android:filterTouchesWhenObscured所在窗口被其它可见窗口遮住时,是否过滤触摸事件
   
   
   
   
    
    android:keepScreenOn设置屏幕常亮
   
   
   
   
    
    android:duplicateParentState是否从父容器中获取绘图状态(光标,按下等)
   
   
   
   
    
    android:soundEffectsEnabled点击或触摸是否有声音效果
   
   
   
   
    
    android:hapticFeedbackEnabled设置触感反馈
   
   
   
   

   
   
   
   
    
    第二类:属性值必须为id的引用名“@id/idname”
   
   
   
   
    
    android:layout_alignBaseline 本元素的文本与父元素文本对齐
   
   
   
   
    
    android:layout_below 在某元素的下方
   
   
   
   
    
    android:layout_above 在某元素的的上方
   
   
   
   
    
    android:layout_toLeftOf 在某元素的左边
   
   
   
   
    
    android:layout_toRightOf 在某元素的右边
   
   
   
   
    
    android:layout_toStartOf本元素从某个元素开始
   
   
   
   
    
    android:layout_toEndOf本元素在某个元素结束
   
   
   
   
    
    android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
   
   
   
   
    
    android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
   
   
   
   
    
    android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
   
   
   
   
    
    android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
   
   
   
   
    
    android:layout_alignStart本元素与开始的父元素对齐
   
   
   
   
    
    android:layout_alignEnd本元素与结束的父元素对齐
   
   
   
   
    
    android:ignoreGravity 指定元素不受重力的影响
   
   
   
   
    
    android:layoutAnimation定义布局显示时候的动画
   
   
   
   
    
    android:id 为布局添加ID方便查找
   
   
   
   
    
    android:tag为布局添加tag方便查找与类似
   
   
   
   
    
    android:scrollbarThumbHorizontal设置水平滚动条的drawable。
   
   
   
   
    
    android:scrollbarThumbVertical设置垂直滚动条的drawable
   
   
   
   
    
    android:scrollbarTrackHorizontal设置水平滚动条背景(轨迹)的色drawable
   
   
   
   
    
    android:scrollbarTrackVertical设置垂直滚动条背景(轨迹)的色drawable
   
   
   
   
    
    android:scrollbarAlwaysDrawHorizontalTrack 设置水平滚动条是否含有轨道
   
   
   
   
    
    android:scrollbarAlwaysDrawVerticalTrack 设置垂直滚动条是否含有轨道
   
   
   
   
    
    android:nextFocusLeft 设置左边指定视图获得下一个焦点
   
   
   
   
    
    android:nextFocusRight设置右边指定视图获得下一个焦点
   
   
   
   
    
    android:nextFocusUp设置上边指定视图获得下一个焦点
   
   
   
   
    
    android:nextFocusDown设置下边指定视图获得下一个焦点
   
   
   
   
    
    android:nextFocusForward设置指定视图获得下一个焦点
   
   
   
   
    
    android:contentDescription 说明
   
   
   
   
    
    android:OnClick 点击时从上下文中调用指定的方法
   
   
   
   
    
             
   
   
   
   
    
    第三类:属性值为具体的像素值,如30dip,40px,50dp
   
   
   
   
    
    android:layout_width定义本元素的宽度
   
   
   
   
    
    android:layout_height定义本元素的高度
   
   
   
   
    
    android:layout_margin 本元素离上下左右间的距离
   
   
   
   
    
    android:layout_marginBottom 离某元素底边缘的距离
   
   
   
   
    
    android:layout_marginLeft 离某元素左边缘的距离
   
   
   
   
    
    android:layout_marginRight 离某元素右边缘的距离
   
   
   
   
    
    android:layout_marginTop 离某元素上边缘的距离
   
   
   
   
    
    android:layout_marginStart本元素里开始的位置的距离
   
   
   
   
    
    android:layout_marginEnd本元素里结束位置的距离
   
   
   
   
    
    android:scrollX水平初始滚动偏移
   
   
   
   
    
    android:scrollY垂直初始滚动偏移
   
   
   
   
    
    android:background本元素的背景
   
   
   
   
    
    android:padding指定布局与子布局的间距
   
   
   
   
    
    android:paddingLeft指定布局左边与子布局的间距
   
   
   
   
    
    android:paddingTop指定布局上边与子布局的间距
   
   
   
   
    
    android:paddingRight指定布局右边与子布局的间距
   
   
   
   
    
    android:paddingBottom指定布局下边与子布局的间距
   
   
   
   
    
    android:paddingStart指定布局左边与子布局的间距与android:paddingLeft相同
   
   
   
   
    
    android:paddingEnd指定布局右边与子布局的间距与android:paddingRight相同
   
   
   
   
    
    android:fadingEdgeLength 设置边框渐变的长度
   
   
   
   
    
    android:minHeight最小高度
   
   
   
   
    
    android:minWidth最小宽度
   
   
   
   
    
    android:translationX 水平方向的移动距离
   
   
   
   
    
    android:translationY垂直方向的移动距离
   
   
   
   
    
    android:transformPivotX相对于一点的水平方向偏转量
   
   
   
   
    
    android:transformPivotY相对于一点的垂直方向偏转量
   
   
   
   

   
   
   
   
    
    第四类:属性值问Android内置值的
   
   
   
   
    
    android:gravity控件布局方式
   
   
   
   
    
    android:layout_gravity布局方式
   
   
   
   
    
    android:persistentDrawingCachehua定义绘图的高速缓存的持久性   
   
   
   
   
    
    android:descendantFocusability控制子布局焦点获取方式 常用于listView的item中包含多个控件 点击无效
   
   
   
   
    
    android:scrollbars设置滚动条的状态
   
   
   
   
    
    android:scrollbarStyle设置滚动条的样式
   
   
   
   
    
    android:fitsSystemWindows设置布局调整时是否考虑系统窗口(如状态栏)
   
   
   
   
    
    android:scrollbarFadeDuration设置滚动条淡入淡出时间
   
   
   
   
    
    android:scrollbarDefaultDelayBeforeFade设置滚动条N毫秒后开始淡化,以毫秒为单位。
   
   
   
   
    
    android:scrollbarSize设置滚动调大小
   
   
   
   
    
    android:fadingEdge 设置拉滚动条时 ,边框渐变的放向
   
   
   
   
    
    android:drawingCacheQuality设置绘图时半透明质量
   
   
   
   
    
    android:OverScrollMode滑动到边界时样式
   
   
   
   
    
    android:alpha设置透明度
   
   
   
   
    
    android:rotation旋转度数
   
   
   
   
    
    android:rotationX水平旋转度数
   
   
   
   
    
    android:rotationY垂直旋转度数
   
   
   
   
    
    android:scaleX设置X轴缩放
   
   
   
   
    
    android:scaleY设置Y轴缩放
   
   
   
   
    
    android:verticalScrollbarPosition摄者垂直滚动条的位置
   
   
   
   
    
    android:layerType设定支持
   
   
   
   
    
    android:layoutDirection定义布局图纸的方向
   
   
   
   
    
    android:textDirection定义文字方向
   
   
   
   
    
    android:textAlignment文字对齐方式
   
   
   
   
    
    android:importantForAccessibility设置可达性的重要行
   
   
   
   
    
    android:labelFor添加标签