定制SeekBar的拇指在Lollipop API21上不透明

40

这是我的拖动条

<SeekBar
    android:id="@+id/seek1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:progressDrawable="@drawable/style_progressbar"
    android:thumb="@drawable/style_progressbar_circle"
    android:progress="20" />

这是 style_progressbar.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape android:shape="rectangle" >
            <corners android:radius="5dp" />
            <gradient
                android:angle="270"
                android:endColor="@color/gris_hint"
                android:startColor="@color/gris_hint" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape android:shape="rectangle" >
                <corners android:radius="5dp" />
                <gradient
                    android:angle="270"
                    android:endColor="@color/gris"
                    android:startColor="@color/gris" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle" >
                <corners android:radius="5dp" />
                <gradient
                    android:angle="270"
                    android:endColor="@color/gris"
                    android:startColor="@color/gris" />
            </shape>
        </clip>
    </item>
</layer-list>

这是style_progressbar_circle.xml文件。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/red_scrubber_control_disabled_holo" android:state_enabled="false"/>
    <item android:drawable="@drawable/red_scrubber_control_pressed_holo" android:state_pressed="true"/>
    <item android:drawable="@drawable/red_scrubber_control_focused_holo" android:state_selected="true"/>
    <item android:drawable="@drawable/red_scrubber_control_normal_holo"/>
</selector>    

这是我在棒棒糖中的看法:

棒棒糖风格的拖动条

这是应该要呈现的样子,而在Kitkat及更低版本上则是这个样子:

Kitkat风格的拖动条

有什么思路吗?我在棒棒糖上遇到了一些布局问题,但这是我自己无法解决的唯一问题。


我有类似的问题。我已经创建了Android错误报告 https://code.google.com/p/android/issues/detail?id=79885 - Eugen Martynov
2个回答

62

材料设计中的进度条默认启用了分割轨道功能。你需要将其关闭。

<SeekBar
    ....
    android:splitTrack="false" />

2
非常好用。谢谢。材料按钮默认也启用了textAllCaps,同样的问题。 - deimian86
7
小提示:要覆盖按住拇指的材料效果,只需要重置背景:android:background="@null"。 - Sergey Vakulenko
@SergeyVakulenko 太棒了!非常感谢你! - rocknow
1
收到警告,此功能仅适用于API 21及更高版本,有没有适用于较低版本的解决方案? - CularBytes
1
@RageCompex 在低版本中默认值为false。 - srka
由于某种原因,拇指背景是在进度条后面绘制的。有人知道为什么吗? - vovahost

1

使用 android.support.v7.widget.AppCompatSeekBarapp:splitTrack 支持所有设备。

  <android.support.v7.widget.AppCompatSeekBar
      app:splitTrack="false"
      android:splitTrack="false"/>

1
在v21布局或API 21项目之外声明“android”标签会警告不兼容,而仅使用“app”标签似乎无法正常工作。您遇到过这个问题吗? - Abandoned Cart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接