我遇到了同样的问题,经过几个小时的研究,我想出了一个解决方案。这个 AOSP 提交对我帮助最大,它显示了在 Android 5.1 (SDK 22) 中对滚动条所做的更改:更新滚动条以匹配材料规范
有两种可能:
A:使用新样式并添加填充
这将保留 API 21 (Android 5.1) 中相同的新矩形,但会在左右添加一些填充。
1:将 fastscroll_thumb_material.xml 复制到您的 drawables 文件夹
这应该是内容(删除了 AOSP 注释以节省空间):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:tint="?attr/colorControlActivated"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<size android:width="8dp" android:height="48dp" />
</shape>
</item>
<item>
<shape android:tint="?attr/colorControlNormal"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<size android:width="8dp" android:height="48dp" />
</shape>
</item>
</selector>
2:编辑你的主题
将以下项目添加到您的主题中。我认为你可以把它放在一个风格中并与它一起使用setFastScrollStyle
,但我发现这更容易。
<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_material</item>
3:编辑 fastscroll_thumb_material.xml
您可以根据自己的喜好对其进行编辑,但我做了以下操作,在滚动条的左侧和右侧添加了 8dp。我在每个形状周围添加了一个图层列表和项目,并添加android:right="8dp"
到android:left="8dp"
新项目中。我尝试将其添加到原始项目中,但这不起作用,也没有为形状添加填充。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:right="8dp" android:left="8dp">
<shape android:tint="?attr/colorControlActivated"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<size android:width="8dp" android:height="48dp" />
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item android:right="8dp" android:left="8dp">
<shape android:tint="?attr/colorControlNormal"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<size android:width="8dp" android:height="48dp" />
</shape>
</item>
</layer-list>
</item>
</selector>
B:将滚动条改为旧样式
这将使用 API 21,Android 5.0 风格
1:将旧的drawables添加到您的项目中
你可以从上面的提交中下载它们(fastscroll_thumb_mtrl_alpha.png 和 fastscroll_track_mtrl_alpha.9.png),但我也捆绑了它们,你也可以从我的 Google Drive下载它们。
2:将 fastscroll_thumb_material.xml 添加到您的可绘制对象中
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<bitmap android:src="@drawable/fastscroll_thumb_mtrl_alpha"
android:tint="?attr/colorControlActivated" />
</item>
<item>
<bitmap android:src="@drawable/fastscroll_thumb_mtrl_alpha"
android:tint="?attr/colorControlNormal" />
</item>
</selector>
3:将 fastscroll_track_material.xml 添加到您的可绘制对象中
<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/fastscroll_track_mtrl_alpha"
android:tint="?attr/colorControlNormal" />
4:编辑你的主题
将以下项目添加到您的主题中。我认为你可以把它放在一个风格中并与它一起使用setFastScrollStyle
,但我发现这更容易。
<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_material</item>
<item name="android:fastScrollTrackDrawable">@drawable/fastscroll_track_material</item>
我希望这有助于实现您的目标:)