我在使用 Android 搜索栏时遇到问题,搜索栏视图似乎有默认填充,我似乎无法删除它,我尝试将填充设置为“0dp”并尝试将边距设置为“-10dp”以查看它是否删除了一些空间并尝试将背景设置为空,以防背景占用空间但似乎没有发生任何事情,SeekBar 标签是:
<SeekBar
android:paddingLeft="0px"
android:paddingRight="0px"
android:background="@null"
android:id="@+id/musicSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
编辑:好的,经过一些测试和尝试一些东西后我学到了这一点:
android:thumb="@null"将删除底部和顶部填充现在我需要知道是否有更干净的方法来去除填充以及所有设备上的拇指尺寸是否相同?欢迎任何帮助。
Mat*_*son 10
我意识到这已经晚了 3 年,但对于像我这样仍然无法找到此解决方案的人来说,这就是。问题是拇指可绘制添加了顶部/底部填充(尝试将拇指可绘制设置为@null并观察填充消失)。解决方案是将所有内容偏移拇指可绘制大小的一半。为了确保布局在不同设备上保持一致,我们将创建一个自定义拇指可绘制对象,以便控制大小。
第 1 步:创建自定义拇指可绘制对象。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="oval">
<size android:height="10dp" android:width="10dp" />
<solid android:color="@color/mediaThumbColor" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
第 2 步:设置 SeekBar。
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:thumb="@drawable/media_seekbar_thumb"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:splitTrack="false"
android:thumbOffset="5dp"
android:elevation="4dp"
/>
Run Code Online (Sandbox Code Playgroud)
splitTrack=false为解决自定义拇指可绘制对象被空白区域填充远离栏的问题。步骤 3:设置媒体栏布局。
这是正确排列所有内容的关键。媒体栏将由顶级父布局组成,其中包含 (1) SeekBar 和 (2) 包含其他所有内容(播放/暂停、后退/前进、曲目时间等)的内部父布局。顶层父级需要具有透明背景并具有高度wrap_content。内部父级需要具有您希望媒体栏的任何背景颜色,以及您希望媒体栏的任何高度。
将内部父级设置为与顶级父级顶部对齐,上边距为自定义拇指可绘制高度的一半,在我们的示例中为 5dp。这会抵消媒体栏中的所有内容,使 SeekBar 看起来正好位于其上方。
这是使用 ConstraintLayout 的示例。
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/media_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
>
<SeekBar
android:id="@+id/media_bar_seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:thumb="@drawable/media_seekbar_thumb"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:splitTrack="false"
android:thumbOffset="5dp"
android:elevation="4dp"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/media_bar_content"
android:layout_width="match_parent"
android:layout_height="@dimen/media_bar_height"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="5dp"
android:background="@color/mediaBarColor"
>
<!-- All mediabar content goes here -->
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
要从 Seekbar 中删除填充,您必须在运行时执行此操作:
findViewById(R.id.seekBar).setPadding(0,0,0,0);
Run Code Online (Sandbox Code Playgroud)
=======================或=====================
Bitmap thumbImage = BitmapFactory.decodeResource(getResources(), R.drawable.thumb);
int paddingDp = (int)(0.5f * (thumbImage.getWidth()));
findViewById(R.id.seekBar).setPadding(paddingDp,0,paddingDp,0);
Run Code Online (Sandbox Code Playgroud)
您无需设置android:thumb="@null"
| 归档时间: |
|
| 查看次数: |
10911 次 |
| 最近记录: |