0

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


res\values\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\drawable\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>

谁能告诉我这里出了什么问题?谢谢!

4

2 回答 2

1

更新

简短的回答是:“拇指”和“轨道”是不同的东西,不要把相同的风格。当您使用“fastScrollbarEnabled”时,“轨道”需要有高度和宽度。


下面的旧答案

显然,启用“fastScrollEnabled”时,您需要指定“拇指”高度。您将相同的可绘制对象放在“拇指”和“轨道”上,是您的意图吗?

查看我的代码:

样式.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>

滚动条.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

于 2015-05-18T23:45:30.470 回答
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>

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

于 2015-05-20T23:15:00.393 回答