安卓:为搜索栏
可绘制垂直对齐这是啥子我需要xml
drawable
,以实现SeekBar
: 安卓:为搜索栏
我尝试了许多不同的变化,这是最好的,我可以做。
这是seekbar_thumb_drawable.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="@color/accent_color"/>
<size
android:height="20dp"
android:width="20dp" />
</shape>
这是seekbar_drawable.xml
:上API 18
<?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="5dp"
android:top="7.5dp">
<shape
android:shape="rectangle">
<solid android:color="@color/seekbar_background" />
<corners android:radius="2.5dp" />
</shape>
</item>
<item
android:id="@android:id/progress"
android:height="10dp"
android:top="5dp">
<clip>
<shape
android:shape="rectangle">
<solid android:color="@color/seekbar_progress" />
<corners android:radius="5dp" />
</shape>
</clip>
</item>
</layer-list>
结果: 问题是,线不verticaly居中。在API 24
结果: 这显示到底我希望它显示。
是否有任何可能的解决方案,使这个显示为从API 16
所有设备的第一张照片?
我不想使用九补丁,因为我需要从资源中使用颜色。 我试过padding
,gravity
,top
,bottom
,inter-shape
,line
,rectangle
但我无法找到解决办法...
你可能面临的已知问题,here是它的解决方案。您应该定义和minHeight
的SeekBar
与其高度相同。或者,您甚至可以将maxHeight
设置为1000dp
等大值,如果您将身高设置为wrap_content
,就像下面在同一主题中提到的答案中所述。
<SeekBar
android:thumb="@drawable/seekbar_thumb_drawable"
android:progressDrawable="@drawable/seekbar_drawable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight="1000dp"
<!-- OR -->
android:maxHeight="16dp"
android:minHeight="16dp"/>
这是因为<item>
的android:height
和android:width
仅适用于API 23以上。如果你在23以下的API中使用这些属性,它不会给你一个错误,而是简单地忽略它。
在你的情况下,android:height="5dp"
和android:height="10dp"
没有被应用。
如果你看看相关docs或者,它说,这些都是在API层面增加23
制作更新在你绘制的文件。
在seekbar_thumb_drawable.xml:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:gravity="center">
<shape android:shape="oval">
<solid android:color="@color/accent_color" />
<size
android:width="20dp"
android:height="20dp" />
</shape>
</item>
</layer-list>
seekbar_drawable.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"
android:height="5dp"
android:gravity="center">
<shape android:shape="rectangle">
<solid android:color="@color/seekbar_background" />
<corners android:radius="2.5dp" />
</shape>
</item>
<item
android:id="@android:id/progress"
android:height="10dp"
android:gravity="center">
<clip>
<shape android:shape="rectangle">
<solid android:color="@color/seekbar_progress" />
<corners android:radius="5dp" />
</shape>
</clip>
</item>
</layer-list>
我米使用项目的重力,让绘制项目在中心画。
,我也面临着同样的问题在低API来行因此,我所做的上面拇指提拉的。
<SeekBar
android:id="@+id/seekbar_transparency"
android:layout_width="match_parent"
android:layout_height="40dp"
android:paddingTop="@dimen/seekbar_thumb_size_space"
android:paddingBottom="@dimen/seekbar_thumb_size_space"
android:progress="100"
android:theme="@style/SeekbarTheme"
android:thumb="@drawable/thumb_drawable" />
style.xml
<!--Seekbar background change-->
<style name="SeekbarTheme" parent="Theme.AppCompat.Light">
<!-- active seekbar progress track color -->
<item name="colorControlActivated">@color/colorSeekBar</item>
<!-- inactive seekbar progress track color -->
<item name="colorControlNormal">@color/colorGray</item>
</style>
thumb_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="2.5dp"
android:left="2.5dp"
android:right="2.5dp"
android:top="2.5dp">
<shape android:shape="rectangle">
<size
android:width="@dimen/seekbar_thumb_size"
android:height="@dimen/seekbar_thumb_size" />
<corners android:radius="20dp" />
<solid android:color="#201DE9B6" />
</shape>
</item>
<item
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp">
<shape android:shape="rectangle">
<size
android:width="@dimen/seekbar_thumb_size"
android:height="@dimen/seekbar_thumb_size" />
<corners android:radius="20dp" />
<solid android:color="#AA1DE9B6" />
</shape>
</item>
</layer-list>
dimes.xml
<!--Seeckbar thumb size-->
<dimen name="seekbar_thumb_size">10dp</dimen>
<dimen name="seekbar_thumb_size_space">5dp</dimen>
<SeekBar
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight="3dp"
android:minHeight="3dp"
android:progressDrawable="@drawable/nnl_bg_seek_bar_progress"
android:splitTrack="false"
android:thumb="@drawable/nnl_sel_seek_bar_thumb"
tools:ignore="UnusedAttribute"
/>
上面的代码是我的WA年。您可能需要注意以下属性:maxHeight/minHeight/splitTrack。