我正在尝试按如下方式自定义SeekBar的视图:
<SeekBar
android:id="@id/seek_bar_player"
android:layout_width="match_parent"
android:layout_height="6pt"
android:paddingLeft="0pt"
android:paddingRight="0pt"
android:paddingStart="0pt"
android:paddingEnd="0pt"
android:layout_marginBottom="-2pt"
android:layout_above="@id/player_container"
android:progressDrawable="@drawable/seekbar_progress"
android:thumb="@drawable/seekbar_thumb"
android:padding="0pt"
/>
seekbar_progress.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:bottom="2pt"
android:top="2pt">
<color android:color="@color/seekbarBackground" />
</item>
<item
android:id="@android:id/progress"
android:bottom="2pt"
android:top="2pt">
<clip>
<color android:color="@color/seekbarProgressBackground" />
</clip>
</item>
</layer-list>
,seekbar_thumb.xml的内容是,
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:width="2pt"
android:height="6pt">
<color android:color="@android:color/holo_red_dark" />
</item>
</layer-list>
然而,它在Android 5.1.1(API级别22)的Levovo Vibe C上的结果很奇怪:
这可能是什么原因?任何建议都受到高度赞赏。
答案 0 :(得分:1)
原因是item
android:width
和android:height
在API23之前无法使用。请关注Android Studio以获取以下提示:
因此,在较旧的API22设备上,它的行为就像你根本没有设置它们一样。
以下是seekbar_thumb.xml
文件的替代方法:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/holo_red_dark"/>
<size
android:width="2pt"
android:height="6pt"/>
</shape>
厚度差异可能低于使用pt
而不是dp
,请参阅here和android documentation。
seekbar_progress.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:drawable="@color/seekbarBackground"/>
<!-- secondary progress optional -->
<item android:id="@android:id/secondaryProgress">
<scale
android:drawable="#00ffff"
android:scaleWidth="100%"/>
</item>
<item android:id="@android:id/progress">
<scale
android:drawable="@color/seekbarProgressBackground"
android:scaleWidth="100%"/>
</item>
</layer-list>
请勿在该文件中指定维度 。
用法:
<SeekBar
...
android:maxHeight="2pt"
android:progressDrawable="@drawable/seekbar_progress"
android:thumb="@drawable/seekbar_thumb"
/>
maxHeight
限制了酒吧的高度,但不限制拇指。
我强烈建议您使用dp
而不是pt
,除非您有充分的理由。