API 22 与 API 23 中的 Seekbar Progress Drawable 调整大小不同
Seekbar Progress Drawable Resizing different in API 22 vs API 23
我在 Android 应用程序中将此 library 用于 VerticalSeekBars
。在我的应用程序中,我使用 LinearLayout
和 layout_weight
属性水平放置多个垂直搜索栏(大约 10-15 个?)。此外,我使用的拇指应该比进度大(基本上位于进度之上)和进度的自定义可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background"
android:height="10dp"
android:gravity="center_vertical">
<shape android:shape="rectangle">
<corners android:radius="500dp"/>
<solid android:color="#000000"/>
</shape>
</item>
</layer-list>
在 API 23(我认为是 Marshmallow?),所有内容都正确排列并在不同的屏幕尺寸上正确调整大小。惊人的。但是,在 API 22 及以下,可绘制进度不会自行调整;相反,它增加了它的大小以使搜索栏拇指适合进度。我试图在我的代码中调整可绘制对象的大小,但仍然没有任何作用。我把它画出来以表明我的意思:
如何让 API 22/below 匹配相同的行为 API 23 正在通过搜索栏实现?
这是我的 VerticalSeekBar
设置示例:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.5">
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
android:layout_width="0dp"
android:layout_height="0dp"
android:max="100"
android:progress="50"
app:seekBarRotation="CW270"
android:progressDrawable="@drawable/custom_track"
android:splitTrack="false"/>
</com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper>
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.5">
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
android:layout_width="0dp"
android:layout_height="0dp"
android:max="100"
android:progress="50"
app:seekBarRotation="CW270"
android:progressDrawable="@drawable/custom_track"
android:splitTrack="false"/>
</com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper>
</LinearLayout>
谢谢!
像这样设置maxHeight
:
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
...
android:maxHeight="2dp"
.../>
我在 Android 应用程序中将此 library 用于 VerticalSeekBars
。在我的应用程序中,我使用 LinearLayout
和 layout_weight
属性水平放置多个垂直搜索栏(大约 10-15 个?)。此外,我使用的拇指应该比进度大(基本上位于进度之上)和进度的自定义可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background"
android:height="10dp"
android:gravity="center_vertical">
<shape android:shape="rectangle">
<corners android:radius="500dp"/>
<solid android:color="#000000"/>
</shape>
</item>
</layer-list>
在 API 23(我认为是 Marshmallow?),所有内容都正确排列并在不同的屏幕尺寸上正确调整大小。惊人的。但是,在 API 22 及以下,可绘制进度不会自行调整;相反,它增加了它的大小以使搜索栏拇指适合进度。我试图在我的代码中调整可绘制对象的大小,但仍然没有任何作用。我把它画出来以表明我的意思:
如何让 API 22/below 匹配相同的行为 API 23 正在通过搜索栏实现?
这是我的 VerticalSeekBar
设置示例:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.5">
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
android:layout_width="0dp"
android:layout_height="0dp"
android:max="100"
android:progress="50"
app:seekBarRotation="CW270"
android:progressDrawable="@drawable/custom_track"
android:splitTrack="false"/>
</com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper>
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.5">
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
android:layout_width="0dp"
android:layout_height="0dp"
android:max="100"
android:progress="50"
app:seekBarRotation="CW270"
android:progressDrawable="@drawable/custom_track"
android:splitTrack="false"/>
</com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper>
</LinearLayout>
谢谢!
像这样设置maxHeight
:
<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar
...
android:maxHeight="2dp"
.../>