and*_*per 6 android android-listview fastscroll android-scrollbar android-5.0-lollipop
我做了一个小库,它展示了如何模仿运行Android Lollipop的股票联系人应用程序的风格,在这里.
似乎在Android 5.1上,快速滚动器看起来与前一个非常不同,并且它太靠近右侧,因此很难使用它.
Android 4.4的屏幕截图:

这是Android 5上的截图:

在Android 5.1上:

我试图浏览Android 5.1的所有"新内容"部分,以及一些相关的类文档,但除了" setFastScrollStyle " 之外我没有找到任何特别的内容.但是,我找不到任何解释如何使用它(加上它来自API 21,所以这可能不是原因).
如何使快速滚动条位于左侧,以便更容易触摸它?
你如何使用setFastScrollStyle?有没有这方面的教程?
我遇到了同样的问题,经过几个小时的研究后,我想出了一个解决方案.这个AOSP提交给了我最多的帮助,它显示了对Android 5.1(SDK 22)中滚动条所做的更改:更新滚动条以匹配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>
Run Code Online (Sandbox Code Playgroud)
2:编辑你的主题
将以下项添加到主题中.我认为你可以把它放在一个风格并使用它setFastScrollStyle,但我发现这更容易.
<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_material</item>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
这将使用API 21,Android 5.0风格
1:将旧的drawable添加到项目中
您可以从上面的提交(fastscroll_thumb_mtrl_alpha.png和fastscroll_track_mtrl_alpha.9.png)下载它们,但我也捆绑了它们,您也可以从我的Google云端硬盘下载它们.
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>
Run Code Online (Sandbox Code Playgroud)
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" />
Run Code Online (Sandbox Code Playgroud)
4:编辑你的主题
将以下项添加到主题中.我认为你可以把它放在一个风格并使用它setFastScrollStyle,但我发现这更容易.
<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_material</item>
<item name="android:fastScrollTrackDrawable">@drawable/fastscroll_track_material</item>
Run Code Online (Sandbox Code Playgroud)
我希望这有助于实现你的目标:)
为什么不在包含 ListView 的布局右侧设置内边距?谷歌网页@ setPadding()。就我个人而言,我使用 android:paddingLeft 来解决像您这样的类似问题。
另一个常见的技巧是在右侧(水平方向)布局中添加(隐藏)ImageView 。ImageView 将被隐藏并且可以设置(宽度)大小。
很高兴帮助一个经常使用 SO 的用户,希望我做到了。问候,汤米·奎。
| 归档时间: |
|
| 查看次数: |
4221 次 |
| 最近记录: |