在使用Android的内置组件时,是否可以在RadioButton和标签之间添加一点空间?默认情况下,文本看起来有点紧张。
<RadioButton android:id="@+id/rb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My Text"/>
我尝试过几件事:
指定边距和填充似乎在整个元素周围添加空间(按钮和文本,一起)。这是有道理的,但不能满足我的需要。
通过XML创建自定义drawable,为已检查和未检查的状态指定图像,然后在每个图像的右侧添加一些额外的像素。这应该可行,但现在您已经超出默认UI。 (不是世界末日,但不理想)
在每个标签的开头添加额外的空格。 Android似乎修剪了一个领先的空格字符,如“我的字符串”,但是指定unicode U + 00A0,就像“\ u00A0My String”一样。这有效,但看起来有点脏。
有更好的解决方案吗?
答案 0 :(得分:99)
对于现在读这篇文章的人。接受的答案将导致新的api上的一些布局问题导致填充太多。
在API&lt; = 16上,您可以在单选按钮上设置填充,以设置相对于单选按钮视图边界的填充。此外,补丁九背景也会改变相对于视图的视图边界。
在API 17上,左边的填充与可绘制的单选按钮相关。同样适用于九个补丁。为了更好地说明填充差异,请参阅随附的屏幕截图。
如果您仔细查看代码,您会在api 17中找到一个名为getHorizontalOffsetForDrawables的新方法。计算单选按钮的左边距时会调用此方法(因此图中所示的附加空间)。
TL; DR您应该为您支持的min sdk设置单选按钮样式,并为api 17 +
设置另一种样式
答案 1 :(得分:61)
不确定这是否可以解决您的问题,但您是否尝试过Radio Button的“Padding left”属性,其值为50dip或更多
答案 2 :(得分:56)
我尝试了几种方法,并在模拟器和设备上完成了正确的工作:
<RadioButton
android:background="@android:color/transparent"
android:button="@null"
android:drawableLeft="@drawable/your_own_selector"
android:drawablePadding="@dimen/your_spacing" />
答案 3 :(得分:29)
在 radiobutton 标签之间添加保证金 paddingLeft :
android:paddingLeft="10dip"
只需设置自定义填充。
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" />
完成强>
答案 4 :(得分:21)
使用以下XML属性。它对我有用
对于API&lt; = 16,使用
android:paddingLeft="16dp"
对于API&gt; = 17使用
android:paddingStart="@16dp"
例如:
<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" />
更多: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" />
答案 5 :(得分:5)
现在无法尝试验证,但您是否尝试过查看属性android:drawablePadding是否符合要求?
答案 6 :(得分:4)
final float scale = this.getResources().getDisplayMetrics().density;
checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f),
checkBox.getPaddingTop(),
checkBox.getPaddingRight(),
checkBox.getPaddingBottom());
答案 7 :(得分:1)
drawables和text之间的填充。它将通过在xml文件中添加以下行来实现。
android:drawablePadding="@dimen/10dp"
答案 8 :(得分:0)
“android:paddingLeft”似乎只能在android 4.2.2下正常工作
我已经尝试了几乎所有版本的android,它只适用于4.2.2版本。
答案 9 :(得分:0)
我试过,“android:paddingLeft”会有效。 paddingLeft只会影响文本,同时保持广播图像保持原始位置。
答案 10 :(得分:0)
我来到这里寻找答案,最简单的方法(经过一番思考)是在标签开头添加间距,就像这样
<RadioGroup
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/btnChangeMode"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_below="@+id/view3"
android:gravity="center|left"
android:id="@+id/ledRadioGroup">
<RadioButton
android:button="@drawable/custom_radio_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" On"
android:layout_marginRight="6dp"
android:id="@+id/ledon"
android:textColor="@color/white" />
<RadioButton
android:button="@drawable/custom_radio_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Off"
android:layout_marginLeft="6dp"
android:id="@+id/ledoff"
android:textColor="@color/white" />
答案 11 :(得分:0)
对我而言:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<item android:right="5dp">
<shape android:paddingLeft="5dp" android:shape="oval">
<size android:width="20dp" android:height="20dp" />
<solid android:color="@color/blue" />
</shape>
</item>
</layer-list>
</item>
<item android:paddingLeft="5dp" android:state_checked="false">
<layer-list>
<item android:right="5dp">
<shape android:paddingLeft="5dp" android:shape="oval">
<size android:width="20dp" android:height="20dp" />
<solid android:color="@color/grey" />
</shape>
</item>
</layer-list>
</item>
</selector>
答案 12 :(得分:0)
<RadioButton
android:id="@+id/rb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@null"
android:paddingLeft="20dp"
android:text="1"
android:textColor="@color/text2"
android:textSize="16sp"
android:textStyle="bold" />
答案 13 :(得分:0)
您可以尝试使用单选按钮的gravity属性。
<RadioButton
android:id="@+id/rb_all"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:gravity="right|center_vertical"
android:padding="@dimen/padding_30dp"
android:text="@string/filter_inv_all"
android:textColor="@color/black"
android:textSize="@dimen/text_size_18" />
这会将文本与最右端对齐。查看图像中的第一个收音机。
答案 14 :(得分:0)
您可以在XML文件上使用此代码
<RadioButton
android:id="@+id/rButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="50dp"
android:paddingLeft="10dip"
android:text="@string/your_text" />
或在Activity类
上使用它radioButton.setPadding(12, 10, 0, 10);
答案 15 :(得分:0)
使用重力
android:gravity="center_horizontal|center_vertical"
答案 16 :(得分:0)
在style.xml中创建一个样式,如下所示
<style name="Button.Radio">
<item name="android:paddingLeft">@dimen/spacing_large</item>
<item name="android:textSize">16sp</item>
</style>
将该样式放在单选按钮
中 <RadioButton
android:id="@+id/rb_guest_busy"
android:layout_width="match_parent"
android:layout_height="48dp"
android:text="@string/guest_is_waiting"
android:textSize="@dimen/font_size_3x_medium"
android:drawablePadding="@dimen/spacing_large"
android:textColor="@color/color_text_heading_dark"
style="@style/Button.Radio"/>
您可以更改与按钮相同的任何属性,因为RadioButton会间接继承按钮。
答案 17 :(得分:-1)
我使用不同的方法,我认为应该适用于所有API版本。 我没有应用填充,而是在RadioButtons之间添加一个空视图:
<View
android:layout_width="20dp"
android:layout_height="1dp" />
这应该给你20dp填充。
答案 18 :(得分:-1)
我知道这是一个老问题,但是通过这个解决方案,我终于安心了,忘记了API级别。
左侧垂直RadioGroup,右侧垂直文本视图。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RadioGroup>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:gravity="center_vertical"
android:text="Radio 1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:gravity="center_vertical"
android:text="Radio 2"/>
</LinearLayout>
</LinearLayout>