Seekbar进度可绘制不显示和API 23

时间:2017-03-24 02:18:52

标签: android xml view seekbar

我有一个自定义SeekBar,它使用LayerList作为进度drawable。在API< 22的Android设备上,它似乎工作正常,但是在API 22上,不显示进度绘制。

这是我的LayerList代码:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background">
    <shape android:shape="rectangle">
        <corners android:radius="20dp"/>
        <gradient android:startColor="#0e0e0f" android:endColor="#373938" android:angle="270"/>
        <stroke android:width="10dp"
            android:color="#2d3035" />
        <size android:height="3dp" android:width="500dp"/>
    </shape>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape android:shape="rectangle">
            <corners android:radius="20dp"/>
            <solid android:color="#45ab12" />
            <stroke android:width="10dp"
                android:color="#2d3035"  />
            <size android:height="3dp" android:width="500dp"/>
        </shape>
    </clip>
</item>

这是我的Seekbar:

 <SeekBar
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:splitTrack="false"

                android:thumbOffset="5dp"
                android:id="@+id/firstAudioPositionSeekBar"
                android:thumb="@drawable/seekbar_thumb"
                android:progressDrawable="@drawable/seekbar_progress_bg"/>

以下是API 22及更低版本的SeekBar的屏幕截图: enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

我在API 22上遇到类似的问题并找到了您的问题。你有没有找到一个好的解决方案?
到目前为止我注意到了许多实验: 1.如果API 22上没有实体,则绘制进度条 2.在API 22设备上绘制的笔画值与所有上层API不同,这是非常奇怪的,因为它甚至没有照顾屏幕尺寸..到底是什么?
3.即使你在API 22上将笔画改为合适的笔画 - 在小分辨率(480/800)和所有其他屏幕尺寸上它仍然有很多不同......

我发现了一个解决方案,但我不认为这是最好的解决方案。我创建了3个单独的可绘制文件(图层列表):一个用于API 22,小分辨率,一个用于API 22,包含所有其他分辨率,一个用于所有API 22以上。我从API 22中删除笔划并放入项目值:

<item android:id="@android:id/background" android:top="15dp" android:bottom="15dp">

我已经测试了10种不同分辨率的手机 - 即使对于大型平板电脑也能完美运行。不过,我认为必须有更好的解决方案。

祝你好运, 最大