android – 如何处理Lollipop 5.1上的快速滚动条?

背景

我做了一个小型图书馆,展示了如何模仿Android Lollipop,here的股票联系人应用程序的风格.

问题

似乎在Android 5.1上,快速滚动器看起来与前一个非常不同,并且它太靠近右侧,因此很难使用它.

Android 4.4的屏幕截图:

这是Android 5上的截图:

在Android 5.1上:

我发现了什么

我试图浏览Android 5.1的所有“新内容”部分,以及一些相关的类文档,但除了“setFastScrollStyle”之外我没有找到任何特别的内容.但是,我找不到任何解释如何使用它(加上它来自API 21,所以这可能不是原因).

这个问题

如何使快速滚动条位于左侧,以便更容易触摸它?

你如何使用setFastScrollStyle?有没有这方面的教程?

解决方法

我遇到了同样的问题,经过几个小时的研究后,我想出了一个解决方案.此AOSP提交对我有所帮助,它显示了对Android 5.1(SDK 22)中滚动条所做的更改: Update scrollbars to match Material spec

有两种可能性:

答:使用新样式并添加填充

这将保持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:将旧的drawable添加到项目中

你可以从上面的提交(fastscroll_thumb_mtrl_alpha.png和fastscroll_track_mtrl_alpha.9.png)下载它们,但我也捆绑了它们,你也可以下载它们from my Google Drive.

2:将fastscroll_thumb_material.xml添加到drawables

<?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添加到drawable中

<?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>

我希望这有助于实现你的目标:)

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...