Android

xiaoxiao2021-02-28  33

关于RadioButton与RadioGroup的API详解> https://www.cnblogs.com/Im-Victor/p/6238437.html 下面记录在使用RadioButton和RadioGroup中遇到的三点问题: 1. RadioButton中如何保持文字和选择图标之间合理的间距问题。 比如上图中,要确保文字乌拉圭和选项框之间留有一定的间隔,这样UI上更美观。附上代码:

<TextView android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="15dp" android:layout_marginTop="15dp" android:text="俄罗斯世界杯乌拉圭VS法国" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/detail_split_line1" /> <RadioGroup android:id="@+id/rg_call_voice_desc" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/test"> <RadioButton android:id="@+id/group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="15dp" android:layout_marginTop="2dp" android:background="@null" android:button="@null" android:checked="true" android:drawableLeft="@drawable/radio_button_picture" android:drawablePadding="8dp" android:text="乌拉圭" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" /> <RadioButton android:id="@+id/rg_group_call_mute" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="36dp" android:layout_marginTop="2dp" android:background="@null" android:button="@null" android:drawableLeft="@drawable/radio_button_picture" android:drawablePadding="8dp" android:text="法国" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" /> </RadioGroup>

UI布局代码中,要实现选项框和文字之间间距,最重要的代码是:

android:background="@null" android:button="@null" android:drawableLeft="@drawable/radio_button_picture" android:drawablePadding="8dp"

其中background标签限定radiobutton没有背景,如果不设置为null,系统会为button默认设置一个空白背景。drawableleft标签代表的是选项框的样式。drawablePadding代表的是文字到选项框的距离。如果没有设置button和background为null,这里的drawablePadding是不会生效的。

RadioButton如何结合RadioGroup实现多个单选功能。 单独的RadioButton叠加使用可以实现多选,但是如果要多个RadioButton之间相互排斥,只能选择一个,那么就得像上诉代码一样,在RadioButton之外再包裹一层radiogroup。可以在其中一个RadioButton中设置android:checked=”true”代表当前Button在UI上是默认选中的。多个RadioGroup(每个RadioGroup中包含多个RadioButton)如何保持子控件上下左右对齐。 代码片段如下: <android.support.constraint.ConstraintLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/1" android:orientation="horizontal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/top_layout" app:layout_constraintVertical_bias="0.0"> <TextView android:id="@+id/tv_desc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="15dp" android:layout_marginTop="15dp" android:text="俄罗斯世界杯巴西VS比利时" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <RadioGroup android:id="@+id/rg_call_desc" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_desc"> <RadioButton android:id="@+id/rg_normal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="15dp" android:layout_marginTop="2dp" android:background="@null" android:button="@null" android:checked="true" android:drawableLeft="@drawable/radio_button_picture" android:drawablePadding="8dp" android:text="巴西" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" /> <RadioButton android:id="@+id/rg_x" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="36dp" android:layout_marginTop="2dp" android:background="@null" android:button="@null" android:drawableLeft="@drawable/radio_y" android:drawablePadding="8dp" android:text="比利时" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" /> </RadioGroup> <View android:id="@+id/line1" android:layout_width="0dp" android:layout_height="1dp" android:layout_marginTop="15dp" android:background="?attr/splitLineColor" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/rg_desc" /> <TextView android:id="@+id/tv_desc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="15dp" android:layout_marginTop="15dp" android:text="俄罗斯世界杯乌拉圭VS法国" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/group_detail_split_line1" /> <RadioGroup android:id="@+id/rg_call_voice_desc" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_desc"> <RadioButton android:id="@+id/rg_xx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="15dp" android:layout_marginTop="2dp" android:background="@null" android:button="@null" android:checked="true" android:drawableLeft="@drawable/radio_button_picture" android:drawablePadding="8dp" android:text="乌拉圭" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" /> <RadioButton android:id="@+id/rg_yy" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="36dp" android:layout_marginTop="2dp" android:background="@null" android:button="@null" android:drawableLeft="@drawable/radio_button_picture" android:drawablePadding="8dp" android:text="法国" android:textColor="?attr/textColorContentTitle" android:textSize="18sp" /> </RadioGroup>

这里发现布局设置的宽度和大小都是一样的,但是上下的比利时和法国按钮并没有左对齐。 此时打开手机设置>开发者选项>显示布局边界发现:

这里白色区域为文字,打码去掉,主要看上下的布局,发现每个group中的button之间的间距是一致的,就是后面两个button上下没有左对齐。 这里暂时没有调整好,思路是在RadioGroup中创建一个相对布局。等调整好了再附上。

转载请注明原文地址: https://www.6miu.com/read-2614766.html

最新回复(0)