android - SeekBar setProgressDrawable 不适用于 Android API <= 21
问题描述
我将我的音乐播放器 Android 应用程序 minSdkVersion 设置为 18。当我在 API 21 和 19 上对其进行测试时,进度的颜色不是我所期望的。SeekBar 应该看起来像图片 1,但它变成了图片 2。(我仍然可以点击它,但颜色似乎是透明的。)
活动布局中 SeekBar 的 XML 代码:
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="@8dp"
android:layout_toLeftOf="@id/full_time"
android:layout_toRightOf="@id/current_time"
android:layout_marginLeft="@16dp"
android:layout_marginRight="@16dp"
android:layout_centerVertical="true"
android:progressBackgroundTint="#E9E9E9"
android:progress="0"
android:indeterminate="false"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:progressDrawable="@drawable/seek_bar"/>
seek_bar XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="4dip" />
<solid android:color="#e9e9e9"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="4dip" />
<solid android:color="@color/colorPink"/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="4dip" />
<solid android:color="@color/colorPink"/>
</shape>
</clip>
</item>
该行android:progressDrawable="@drawable/seek_bar"/>
不适用于 API <=21,即使我seekBar.setProgressDrawable(getResources().getDrawable(R.drawable.seek_bar));
在活动的 OnCreate 方法中编写。但是,如果我在 API 23 上进行测试,有两种方法可以完美运行。如何设置进度颜色?
解决方案
这听起来像是 SDK 级别的问题。这可能是因为progressBackgroundTint
是在 API 21 中添加的吗?我建议您将 minSDK 更改为 >=21 并再次测试。
推荐阅读
- php - 如何同时运行多个php文件?
- celery - Django Celery 作业在执行前一小时消失
- python-3.x - 为枚举类python编写__str__方法
- python - 当用户已经在 django 中有会话时如何拒绝登录
- python - 如何从 Python 启动具有自己配置的 redis 服务器?
- angular - 路由器导航在订阅内不起作用(角度)
- curl - Gitlab-ci 无法将所有 .js 文件上传到 JFrog
- html - 如何防止gif背景停止
- python - 问题从 MtConnect 流解析 XML,不确定如何访问特定节点值
- python - 通过Python中嵌套字典中的值和键从字典中获取键