Android自定义滚动条和fastScrollEnabled

时间:2015-05-18 23:05:26

标签: android xml scrollbar xml-drawable custom-scrolling

我只想在我的Listview中使用fastScrollEnabled自定义滚动条,但这不起作用! 启用fastScroll后,在正常滚动和快速滚动时,自定义滚动条不可见,它是默认滚动条。 没有fastScrollEnabled就可以像它应该的那样工作。

RES \值\ Styles.xlm:

<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="android:scrollbarThumbVertical">@drawable/scrollbar</item>
    <item name="android:fastScrollThumbDrawable">@drawable/scrollbar</item>
    <item name="android:fastScrollTrackDrawable">@drawable/scrollbar</item>
</style>
...

RES \抽拉\ scrollbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<gradient
    android:angle="45"
    android:endColor="#CC3401"
    android:centerColor="#CC5c33"
    android:startColor="#CC3401" />

<corners android:radius="8dp" />
<size android:width="4dp"/>
<padding
    android:left="0.5dp"
    android:right="0.5dp" />
</shape>

的AndroidManifest.xml:

    <application
    android:theme="@style/AppTheme"

我的列表视图:

 <ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff000020"
    android:clickable="false"
    android:fastScrollEnabled="true">
</ListView>

有人可以告诉我这里有什么问题吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

<强>更新

简短的回答是:&#34;拇指&#34;和&#34;跟踪&#34;是不同的东西,不要放相同的风格。区域使用&#34; fastScrollbarEnabled&#34;时,&#34;跟踪&#34;需要有高度和宽度。

以下旧答案

显然你需要指定&#34;拇指&#34;使用&#34; fastScrollEnabled&#34;时的高度启用。你把同样的绘画用于&#34;拇指&#34;和&#34;追踪&#34;,是你的意图吗?

查看我的代码:

<强> style.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

        <item name="android:fastScrollTrackDrawable">@drawable/fast_scrollbar_track</item>
        <item name="android:fastScrollThumbDrawable">@drawable/fast_scrollbar</item>

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

</resources>

<强> fast_scrollbar.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="45"
        android:endColor="#ff00ff00"
        android:centerColor="#ff00ff00"
        android:startColor="#ff00ff00" />

    <corners android:radius="8dp" />
    <size android:width="4dp" android:height="50dp"/>
    <padding
        android:left="0.5dp"
        android:right="0.5dp" />
</shape>

<强> fast_scrollbar_track.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="45"
        android:endColor="#ffff0000"
        android:centerColor="#ffff0000"
        android:startColor="#ffff0000" />

    <corners android:radius="8dp" />
    <size android:width="4dp" android:height="50dp"/>
    <padding
        android:left="0.5dp"
        android:right="0.5dp" />
</shape>

<强> scrollbar.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="45"
        android:endColor="#ff00ff00"
        android:centerColor="#ff00ff00"
        android:startColor="#ff00ff00" />

    <corners android:radius="8dp" />
    <size android:width="4dp"/>
    <padding
        android:left="0.5dp"
        android:right="0.5dp" />
</shape>

<强> scrollbar_track.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="45"
        android:endColor="#ffff0000"
        android:centerColor="#ffff0000"
        android:startColor="#ffff0000" />

    <corners android:radius="8dp" />
    <size android:width="4dp"/>
    <padding
        android:left="0.5dp"
        android:right="0.5dp" />
</shape>

我的设备打印:

fastScrollEnabled=true

fastScrollEnabled=false

答案 1 :(得分:0)

现在,我知道为什么我不能做快速滚动。我使用Viewpager作为Listview的父级,滚动条位置位于屏幕的右侧。我需要将滚动条位置稍微设置到左侧以正确触摸滚动条以便快速滚动:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:right="20dp"> <!-- Margin -->
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <gradient
                android:angle="45"
                android:centerColor="#CC6000"
                android:endColor="#CC5000"
                android:startColor="#CC5000"/>

            <corners android:radius="8dp"/>
            <size
                android:width="6dp"
                android:height="30dp"/>
        </shape>
    </item>
</layer-list>

再次感谢你的帮助,路易斯!