如何使SeekBar占据父容器的整个宽度

15

我在一个RelativeLayout中有一个SeekBar,其宽度等于屏幕的宽度。

我将layout_width="match_parent"应用到了SeekBar上,但似乎保留了一些空白空间来容纳拇指。

我也尝试使用android:thumb="@null"。拇指已经消失了,但两侧的空白空间没有消失。

我真的需要使SeekBar的宽度与父元素相匹配。有人能帮我吗?也许我可以创建一个自定义的SeekBar类,并在onMeasure()中将宽度设置为父级的宽度。如果这是一个可行的解决方案,我不知道如何将父宽度传递给SeekBar类。

非常感谢您提供的任何帮助。


你能发布一下XML吗?你使用的是本地图形吗? - Niko
请展示您想要的 XML 和截图,以及您实际得到的内容。 - MysticMagicϡ
4个回答

29

尝试使用xml中的 SeekBar 定义以下内容:

android:padding="0dp"

1
我很惊讶这个方法居然奏效了!非常感谢。我从来没有想过这一点,因为除非我在布局中明确定义了填充,否则不会有任何填充存在。 - David Heisnam
6
它在API 17或更高版本中无法工作。https://dev59.com/fZDea4cB1Zd3GeqPbW7K - user3473590
3
正如@wrkwrk所提到的,如果您添加以下内容:android:padding="0dp" android:paddingEnd="0dp" android:paddingStart="0dp"一切都会完美地运行。 - temnoi
2
必须指定 android:paddingStart="0dp"android:paddingEnd="0dp" 才能使其工作。 - Alon

16
 android:paddingStart="0dp"
 android:paddingEnd="0dp"

对我有用。


1
这对我有效,而被接受的答案却奇怪地没有。此外,您仍然需要顶部/底部填充来为拇指留出空间(通常比条本身要大),因此在我看来,这是更好的答案。 - Sahbi

3

我在我的应用中解决了这个问题。问题在于,即使你没有设置SeekBar的padding,也可能在你的appTheme继承的主题中有一些padding(paddingLeft、paddingTop、paddingRight、paddingBottom、paddingStart、paddingEnd)。将这些padding设置为0dp,它应该可以正常工作。


0

在您发布您的xml之前,我猜测您的RelativeLayout有以下行:

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

这意味着您的RelativeLayout没有填满屏幕,seekbar填充在其父布局(RelativeLayout)中。因此,您无法获取所需的视图。


我的父视图上没有填充。但是感谢您的回复。 - David Heisnam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接