如何在ListView中从右边缘设置垂直滚动条的边距?

25

针对Android平台:

我需要在自定义的listview垂直滚动条的右侧放置间距。请参见附图。默认滚动条会紧贴到listview的极右侧。 图片

请帮忙解决,谢谢。


这是为哪个平台/GUI框架设计的?很多都有垂直滚动条和列表视图。 - Cody Gray
这是针对Android平台2.1及以上版本的。 - user744881
3个回答

47

如果您关心设计并希望全局应用样式,请使用此方法。


res/values/styles.xml

<item name="android:scrollbarThumbVertical">@drawable/scrollbar</item>

res/drawable/scrollbar.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:right="4dp"> <!-- Your Margin -->
        <shape>
            <solid android:color="@color/red500" /> <!-- Your Color -->
            <corners android:radius="2dp" /> <!-- Your Radius -->
            <size android:width="4dp" /> <!-- Your Width -->
        </shape>
    </item>
</layer-list>

所有其他答案都是由开发人员创建的,而不是像我这样的设计师。

结果

好的滚动条


这就是我一直在寻找的!谢谢你,Michael! - Michael van der Horst
抱歉我只能给一个赞。这个回答值得100个赞。 - X09

22

请参考 Android View 文档中关于 android:scrollbarStyle 属性的说明。您可能想要使用的样式是 insideOverlay(与 android:paddingRight 一起使用)。

类似下面这样:

<LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:paddingRight="50dip">
    <ListView
        android:id="@+id/scrollable_table" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbarStyle="insideOverlay">
    .
    .
    .

2
为什么不在ListView中直接使用填充而不是使用包装器? - Gil Vegliach
2
@Michael的回答更好。请仔细查看并考虑更改已接受的答案。 - aaaidan
注意:如果您需要相反的效果(使滚动条向右移动),并且具有 paddingRightclipToPadding = false,请使用 outsideOverlay - Johnny Five

-2

尝试启用快速滚动,它大多数时候都能完成任务:

<ListView
    android:id="@+id/chapter_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fastScrollEnabled="true"/>

这并没有回答问题。 - nyconing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接