Seekbar progressdrawable 在 Android M 以下无法正常工作
Seekbar progressdrawable not work correctly below Android M
我有一个搜索栏,其高度为 16dp
。
minHeight="16dp"
maxHeight="16dp"
现在我必须使用自定义进度绘制。
<?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 android:shape="rectangle">
<solid android:color="xxx"/>
<corners android:radius="6dp"/>
</shape>
</item>
<item
android:id="@android:id/secondaryProgress"
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp">
<clip>
<shape android:shape="rectangle">
<solid android:color="xxx"/>
<corners android:radius="4dp"/>
</shape>
</clip>
</item>
<item
android:id="@android:id/progress"
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp">
<clip>
<shape android:shape="rectangle">
<solid android:color="xxx"/>
<corners
android:radius="4dp"/>
</shape>
</clip>
</item>
如您所见,我使用 left
、top
、right
、bottom
来插入 progress
和 secondaryProgress
。
它在 Android M 以上运行良好,但在 Android M 以下,porgress 和 secondaryProgress 填充 background
换句话说background
项被 progress
和 secondaryProgress
覆盖。但我希望进度和 secondaryProgress 小于背景项。
有解决办法:
LayerDrawable drawable = (LayerDrawable) mSeekBar.getProgressDrawable();
// secondaryProgress
drawable.setLayerInset(1, padding, padding, padding, padding);
// progress
drawable.setLayerInset(2, padding, padding, padding, padding);
谁能解释一下为什么在 API 23 以下的 xml 中设置 left
right
top
bottom
没用?
我有一个搜索栏,其高度为 16dp
。
minHeight="16dp"
maxHeight="16dp"
现在我必须使用自定义进度绘制。
<?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 android:shape="rectangle">
<solid android:color="xxx"/>
<corners android:radius="6dp"/>
</shape>
</item>
<item
android:id="@android:id/secondaryProgress"
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp">
<clip>
<shape android:shape="rectangle">
<solid android:color="xxx"/>
<corners android:radius="4dp"/>
</shape>
</clip>
</item>
<item
android:id="@android:id/progress"
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp">
<clip>
<shape android:shape="rectangle">
<solid android:color="xxx"/>
<corners
android:radius="4dp"/>
</shape>
</clip>
</item>
如您所见,我使用 left
、top
、right
、bottom
来插入 progress
和 secondaryProgress
。
它在 Android M 以上运行良好,但在 Android M 以下,porgress 和 secondaryProgress 填充 background
换句话说background
项被 progress
和 secondaryProgress
覆盖。但我希望进度和 secondaryProgress 小于背景项。
有解决办法:
LayerDrawable drawable = (LayerDrawable) mSeekBar.getProgressDrawable();
// secondaryProgress
drawable.setLayerInset(1, padding, padding, padding, padding);
// progress
drawable.setLayerInset(2, padding, padding, padding, padding);
谁能解释一下为什么在 API 23 以下的 xml 中设置 left
right
top
bottom
没用?