android ListView 滚动条样式
Posted
技术标签:
【中文标题】android ListView 滚动条样式【英文标题】:android ListView scrollbarStyle 【发布时间】:2011-03-07 09:33:01 【问题描述】:有人知道关于 android:scrollbarStyle 的任何文档吗?如果可能的话,我想看看 4 个值中的每一个的例子和屏幕截图。我看到了外部类型和内部类型之间的区别,但是插入和开始部分是关于什么的?例如,我似乎看不出 insideOutset 和 insideInset 之间的区别,同样,我看不出 outsideOutset 和 outsideOutset 之间的区别。
提前致谢! 本
【问题讨论】:
【参考方案1】:这里有一个更详细的例子。我设置了背景颜色以使这里发生的事情更加明显。
首先,颜色:
黑色 - 边距 白色 - 填充 灰色 - 滚动视图的内容 绿色 - 滚动条 if 它占用了自己的空间(我将其明确添加为scrollbarTrackVertical
用于两个“插入”示例)
让我们定义两个部分:
“内容区域” - 要在滚动视图中显示的内容 "padding" - 滚动视图内容周围的空间让我们分别考虑scrollBarStyle
的两个部分:
inside
- 滚动条出现在内部内容区域(填充环绕内容和滚动条)
outside
- 滚动条出现在内容区域之外
overlay
- 滚动条覆盖它所在部分的右边缘
inset
- 滚动条将其所在的部分推向左侧,占据自己的空间
布局xml出现在下方
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_
android:layout_
android:background="#000"
>
<ScrollView
android:layout_
android:layout_
android:layout_weight="1"
android:scrollbarStyle="insideOverlay"
android:background="#fff"
android:fadeScrollbars="false"
android:layout_margin="8dp"
android:padding="16dp" >
<LinearLayout android:orientation="vertical" android:layout_ android:layout_ android:background="#aaa" >
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideOverlay"/>
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideOverlay"/>
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideOverlay"/>
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideOverlay"/>
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideOverlay"/>
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideOverlay"/>
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideOverlay"/>
</LinearLayout>
</ScrollView>
<ScrollView
android:layout_
android:layout_
android:layout_weight="1"
android:scrollbarStyle="insideInset"
android:background="#fff"
android:scrollbarTrackVertical="@drawable/green_block"
android:fadeScrollbars="false"
android:layout_margin="8dp"
android:padding="16dp" >
<LinearLayout android:orientation="vertical" android:layout_ android:layout_ android:background="#aaa" >
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="insideInset" />
</LinearLayout>
</ScrollView>
<ScrollView
android:layout_
android:layout_
android:layout_weight="1"
android:scrollbarStyle="outsideOverlay"
android:background="#fff"
android:fadeScrollbars="false"
android:layout_margin="8dp"
android:padding="16dp" >
<LinearLayout android:orientation="vertical" android:layout_ android:layout_ android:background="#aaa" >
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideOverlay" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideOverlay" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideOverlay" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideOverlay" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideOverlay" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideOverlay" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideOverlay" />
</LinearLayout>
</ScrollView>
<ScrollView
android:layout_
android:layout_
android:background="#fff"
android:layout_weight="1"
android:scrollbarStyle="outsideInset"
android:scrollbarTrackVertical="@drawable/green_block"
android:fadeScrollbars="false"
android:layout_margin="8dp"
android:padding="16dp" >
<LinearLayout android:orientation="vertical" android:layout_ android:layout_ android:background="#aaa" >
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideInset" />
<TextView android:textSize="32sp" android:layout_ android:layout_ android:text="outsideInset" />
</LinearLayout>
</ScrollView>
</LinearLayout>
以编程方式设置滚动条样式:
setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY)
setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET)
setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY)
setScrollBarStyle(View.SCROLLBARS_OUTSIDE_INSET)
【讨论】:
很高兴有一个解释清楚地解释了差异是什么!明确我们应该使用哪个版本【参考方案2】:没有像 outsideOutset 和 insideOutset 这样的值。可能的四个值是 insideOverlay、insideInset、outsideOverlay、outsideInset 文档位于以下两个链接...
http://developer.android.com/reference/android/view/View.html#attr_android:scrollbarStyle
http://developer.android.com/reference/android/view/View.html#SCROLLBARS_INSIDE_INSET
我无法正确理解文档。 所以参考 ApiDemos Scrollbar demo,我尝试了这个。但是我发现 insideInset 和 outsideOverlay 没有区别。 这两个值是不同的,要么是 Inset 要么是 Overlay
更新后的scrollbar3.xml是
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical">
<ScrollView
android:id="@+id/view1"
android:layout_
android:layout_
android:padding="8dip"
android:scrollbarStyle="insideOverlay"
android:background="@android:color/white"
android:overScrollMode="never">
<TextView
android:layout_
android:layout_
android:textColor="#ffffff"
android:background="@android:color/darker_gray"
android:text="@string/scroll_text" />
</ScrollView>
<ScrollView
android:id="@+id/view2"
android:layout_
android:layout_
android:padding="8dip"
android:scrollbarStyle="insideInset"
android:background="@android:color/white"
android:overScrollMode="never">
<TextView
android:layout_
android:layout_
android:textColor="#ffffff"
android:background="@android:color/darker_gray"
android:text="@string/scroll_text" />
</ScrollView>
<ScrollView
android:id="@+id/view3"
android:layout_
android:layout_
android:padding="8dip"
android:scrollbarStyle="outsideOverlay"
android:background="@android:color/white"
android:overScrollMode="never">
<TextView
android:layout_
android:layout_
android:textColor="#ffffff"
android:background="@android:color/darker_gray"
android:text="@string/scroll_text" />
</ScrollView>
<ScrollView
android:id="@+id/view4"
android:layout_
android:layout_
android:padding="8dip"
android:scrollbarStyle="outsideInset"
android:background="@android:color/white"
android:overScrollMode="never">
<TextView
android:layout_
android:layout_
android:textColor="#ffffff"
android:background="@android:color/darker_gray"
android:text="@string/scroll_text" />
</ScrollView></LinearLayout>
我希望有人会看到并澄清......
【讨论】:
【参考方案3】:上面的答案对我来说不太有效,所以我想出了以下答案:
如果这是您想要实现的目标,那就去吧:
列表视图:
<ListView
android:layout_
android:layout_
android:scrollbarStyle="outsideOverlay"
android:scrollbarThumbVertical="@drawable/scrollbar" />
可绘制滚动条:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@android:color/transparent"
android:/>
<item
android:drawable="@android:color/holo_red_dark"
android:right="18dp" />
</layer-list>
感谢this answer
【讨论】:
以上是关于android ListView 滚动条样式的主要内容,如果未能解决你的问题,请参考以下文章