在Android中添加RadioButton及其标签之间的边距?

all*_*aws 77 android radio-button

是否可以在仍然使用Android的内置组件的同时在RadioButton和标签之间添加一点空间?默认情况下,文本看起来有点紧张.

<RadioButton android:id="@+id/rb1"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:text="My Text"/>
Run Code Online (Sandbox Code Playgroud)

我尝试了几件事:

  1. 指定边距和填充似乎在整个元素周围添加空间(按钮和文本,一起).这是有道理的,但不能做我需要的.

  2. 通过XML创建自定义drawable,为已检查和未检查的状态指定图像,然后在每个图像的右侧添加一些额外的像素.这应该可行,但现在您已经超出默认UI.(不是世界末日,但不是理想的)

  3. 在每个标签的开头添加额外的空格.Android似乎修剪了一个领先的空格字符,如"我的字符串",但是指定unicode U + 00A0,就像"\ u00A0My String"一样.这有效,但似乎有点脏.

更好的解决方案?

Jim*_*aca 108

对于现在读这个的人.接受的答案将导致新的api上的一些布局问题导致填充太多.

在API <= 16时,您可以在单选按钮上设置填充,以设置相对于单选按钮的视图边界的填充.另外,补丁九背景也改变了相对于视图的视图边界.

在API 17上,左边的填充与可绘制的单选按钮相关.同样适用于九个补丁.为了更好地说明填充差异,请参阅随附的屏幕截图.

如果你仔细研究代码,你会在api 17中找到一个名为getHorizo​​ntalOffsetForDrawables的新方法.在计算单选按钮的左边距时(因此图中所示的附加空间),调用此方法.

TL; DR您应该为您支持的min sdk设置单选按钮样式,并为api 17+设置另一种样式

结合屏幕截图显示api版本之间的左填充差异

  • Google开发人员/管理层如何对待我们常见的开发人员.无论什么时候,他们都会随心所欲.一致性和完整性对​​他们毫无意义. (14认同)
  • 执行此操作的最佳方法是使用"values-v17"目录; 将您的API 17+维度放在那里的资源xml中,将16岁及以下的标准维度放在简单的"值"中. (11认同)
  • api 17是android.os.Build.VERSION_CODES.JELLY_BEAN_MR1 (2认同)

小智 62

不确定这是否能解决您的问题,但您是否尝试过Radio Button的"Padding left"属性,其值为50dip或更多

  • 这是有效的,并且需要 50dip 来覆盖默认 drawable 的宽度。起初我用了 20dip,文字向左移动!那是因为锚点不是 drawable 的右边缘;它是可绘制对象的左边缘。 (2认同)

Gia*_* P. 56

我尝试了几种方法,并完成了这个在模拟器和设备上正常工作:

    <RadioButton
        android:background="@android:color/transparent"
        android:button="@null"
        android:drawableLeft="@drawable/your_own_selector"
        android:drawablePadding="@dimen/your_spacing" />
Run Code Online (Sandbox Code Playgroud)
  • android:background需要透明,因为它似乎在api10上有一个带有内在填充的背景(没有尝试过其他apis但是解决方案也适用于其他人)
  • android:button需要为null,否则paddings将无法正常工作
  • 需要指定android:drawableLeft而不是android:button
  • android:drawablePadding是你的drawable和你的文本之间的空间

  • 最好的答案!你也可以设置android:background ="@ null",看起来就像你说的那样没有填充. (4认同)
  • 当我设置android:button ="@ null"时,单选按钮未被检查(单击).我做错了什么.请帮助http://stackoverflow.com/questions/28052820/android-custom-radio-button-not-getting-checked (2认同)

Hir*_*tel 31

通过paddingLeftradiobutton标签之间添加边距:

android:paddingLeft="10dip"
Run Code Online (Sandbox Code Playgroud)

只需设置自定义填充.

RadioButton的xml属性.

<RadioButton
    android:id="@+id/radHighest"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@drawable/YourImageResource"
    android:drawablePadding="50dp"
    android:paddingLeft="10dip"
    android:text="@string/txt_my_text"
    android:textSize="12sp" />
Run Code Online (Sandbox Code Playgroud)

完成


Sri*_*ddy 21

使用以下XML属性.它对我有用

对于API <= 16使用

android:paddingLeft="16dp"
Run Code Online (Sandbox Code Playgroud)

对于API> = 17使用

android:paddingStart="@16dp"
Run Code Online (Sandbox Code Playgroud)

例如:

<android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/popularityRadioButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:paddingEnd="@dimen/radio_button_text"
        android:paddingLeft="@dimen/radio_button_text"
        android:paddingRight="@dimen/radio_button_text"
        android:paddingStart="@dimen/radio_button_text"
        android:text="Popularity"
        android:textSize="@dimen/sort_dialog_text_size"
        android:theme="@style/AppTheme.RadioButton" />
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更多:drawablePadding属性不起作用.仅当您在单选按钮中添加了drawable时,它才有效.对于Eg:

<RadioButton
    android:id="@+id/radioButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:button="@null"
    android:drawableEnd="@android:drawable/btn_radio"
    android:drawablePadding="56dp"
    android:drawableRight="@android:drawable/btn_radio"
    android:text="New RadioButton" />
Run Code Online (Sandbox Code Playgroud)


Mar*_*k B 5

现在无法尝试验证,但是您是否尝试过查看属性android:drawablePadding是否满足您的需求?