我有一个使用 LayerList 作为进度可绘制对象的自定义 SeekBar。在 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
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 上遇到了类似的问题并找到了您的问题。你找到一个好的解决方案了吗?
到目前为止,我通过许多实验注意到的是:
1. 在 API 22 上没有实体绘制进度条
2. 在 API 22 设备上绘制的描边值与在所有上层 API 上绘制的不同,这很奇怪,因为它甚至不考虑屏幕尺寸..到底是什么?
3. 即使您在 API 22 上将笔划更改为正确的笔划 - 在小分辨率 (480/800) 和所有其他屏幕尺寸上仍然有很大不同..
我找到了一个解决方案,但我认为它不是最好的。我创建了 3 个单独的可绘制文件(层列表):一个用于具有小分辨率的 API 22,一个用于具有所有其他分辨率的 API 22,一个用于所有 22 以上的 API。我从具有 API 22 的那些中删除了描边并放入项目值:
<item android:id="@android:id/background" android:top="15dp" android:bottom="15dp">
我已经在 10 款不同分辨率的手机上对其进行了测试 - 它运行完美,即使对于大型平板电脑也是如此。不过,我认为必须有更好的解决方案。
最好的问候, 最大
关于android - Seekbar 进度可绘制不显示和 API 23,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42990294/