我有一个自定义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"/>
答案 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种不同分辨率的手机 - 即使对于大型平板电脑也能完美运行。不过,我认为必须有更好的解决方案。
祝你好运, 最大