我正在开发一个快速滚动条。我想在旧设备上使用 Android 5.1 风格的快速滚动条(我正在测试 Android 5.0.2,API 21)。这是我到目前为止所得到的照片。(由于信誉系统,我还不能发布照片(我是新来的),所以这是我的谷歌照片的链接。)
https://goo.gl/photos/YihnpUN3SfjLjjB8A
这是我的问题:我希望滚动条轨道(灰色部分)占据屏幕的整个高度(更准确地说是内容的整个高度)。现在它从操作栏下方几个像素开始,在导航栏上方几个像素结束 - 我希望它从操作栏下方开始并在导航栏上方结束。
这是我的代码实现:
可绘制的 fastscroll_thumb.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:left="8dp">
<shape
android:tint="?attr/colorControlActivated"
android:shape="rectangle">
<solid android:color="@color/colorPrimaryDark" />
<size
android:width="8dp"
android:height="48dp" />
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item android:left="8dp">
<shape
android:tint="?attr/colorControlNormal"
android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
<size
android:width="8dp"
android:height="48dp" />
</shape>
</item>
</layer-list>
</item>
</selector>
可绘制的 fastscroll_track.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item android:left="8dp">
<shape
android:tint="?attr/colorControlNormal"
android:shape="rectangle">
<solid android:color="@color/fastScrollTrack" />
<size android:width="8dp" />
</shape>
</item>
</layer-list>
</item>
</selector>
我正在为列表使用一个片段:
片段布局文件
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/all_songs_fragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="@android:color/transparent"
android:drawSelectorOnTop="true"
android:focusable="true"
android:clickable="true"
android:fastScrollEnabled="true" />
</LinearLayout>
样式.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb</item>
<item name="android:fastScrollTrackDrawable">@drawable/fastscroll_track</item>
</style>
</resources>
我认为发生的事情是我只是在更改快速滚动条的“主题”。由于我使用的是 API 21,所以库存滚动条看起来不同(它只是一条带有较小拇指的细线 - https://goo.gl/photos/T15JVGgpisqqYSd26)。我设法使拇指高 48dp 宽 8dp,就像它应该的那样。但是,我无法更改轨道的高度。我想将它设置为“fill_parent”之类的东西,但我不能——唯一允许的单位是 px、dp、sp、in 和 mm。是否有任何简单的解决方法,还是我必须深入研究 fastscroll 实现?
还有一个问题:谁能告诉我快速滚动轨道的正确颜色?我目前正在使用#21000000
.
谢谢。