我想在他的文字中设置一个单选按钮。 我在这里看到了这样的解决方案:
<RadioButton
android:drawablePadding="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New RadioButton"
android:id="@+id/radioButton"
android:drawableRight="@android:drawable/btn_radio"
android:button="@null"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:paddingStart="18dp"
android:paddingEnd="12dp"
android:textColor="@color/DefaultGrey"
android:textSize="14sp"
android:checked="false" />
这会在他的文字中设置单选按钮,但我不喜欢替代单选按钮的样式,我可以使用此代码。
有没有办法使用默认的单选按钮样式?
答案 0 :(得分:1)
你可以试试这个
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RadioButton
android:id="@+id/radiobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"/>
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/radiobutton"
android:layout_alignBottom="@+id/radiobutton"
android:layout_alignParentLeft="true">
答案 1 :(得分:1)
解决但下一个问题
这是解决方案:
<RadioGroup
android:id="@+id/rgRight"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@+id/HeaderSectionSort"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:weightSum="1">
<RadioButton
android:id="@+id/radio1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:button="@null"
android:drawableRight="@drawable/ic_selected_sort"
android:text="@string/Radio1"
android:textColor="@color/DefaultGrey"
android:textSize="14sp"
android:height="40dp"
android:paddingLeft="16dp"
android:paddingRight="10dp" />
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#f4f4f4"
android:id="@+id/Seperator3"
android:layout_marginTop="5dp" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:paddingLeft="16dp"
android:button="@null"
android:drawableRight="@drawable/ic_selected_sort"
android:buttonTint="@color/DefaultGreen"
android:text="@string/Radio2"
android:textColor="@color/DefaultGrey"
android:textSize="14sp"
android:height="40dp"
android:paddingRight="10dp" />
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#f4f4f4"
android:id="@+id/Seperator4"
android:layout_marginTop="5dp" />
<RadioButton
android:id="@+id/radio3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:paddingLeft="16dp"
android:button="@null"
android:drawableRight="@drawable/ic_selected_sort"
android:text="Radio3"
android:textColor="@color/DefaultGrey"
android:textSize="14sp"
android:height="40dp"
android:paddingRight="10dp" />
</RadioGroup>
结果:
问题: 我想以编程方式在开头隐藏drawable(ic_selected_sort)。然后点击将其设置为可见。
我尝试这样的事情:
rb1.setButtonDrawable(android.R.color.white);
但我没有生效。 有任何想法吗? :)
答案 2 :(得分:1)
您只需要在单选按钮中添加以下代码
android:layoutDirection="rtl"
eg.
<RadioButton
android:id="@+id/rb_male"
android:layout_width="wrap_content"
android:layoutDirection="rtl"
android:layout_height="wrap_content"
android:textColor="@color/text_color"
android:text="Male" />
答案 3 :(得分:0)
这是我在项目中添加到Checkbox的内容:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/tick_green" >
<shape >
<size android:width="@dimen/d32"
android:height="@dimen/d32"/>
</shape>
</item>
<item android:state_checked="false"
android:drawable="@drawable/uncheck" >
<shape >
<size android:width="@dimen/d32"
android:height="@dimen/d32"/>
</shape>
</item>
我的复选框代码如下所示:
<CheckBox
android:id="@+id/reason_cb_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:button="@null"
android:drawableRight="@drawable/my_checkbox_drawable" <- set it here
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingLeft="@dimen/d16"
android:paddingRight="@dimen/d16"
android:text="@string/some_text" />
你可以创建一个类似的drawable并将其设置为你的RadioButton drawableRight属性。
注意:&#34;取消选中&#34;是一个透明的drawable,我为未经检查的状态创建。
答案 4 :(得分:0)
Kotlin编程解决方案:
private fun createDrawableRightRadioButton(message: String): RadioButton {
val radioButton = RadioButton(context)
radioButton.layoutParams = LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT)
radioButton.setText(message)
radioButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.resources.getDimension(R.dimen.text_medium)); //<dimen name="text_medium">14sp</dimen>
radioButton.setTextColor(ContextCompat.getColorStateList(context, R.color.radio_grey_text_selector))
radioButton.typeface = Typeface.create("roboto", Typeface.NORMAL)
radioButton.layoutDirection = View.LAYOUT_DIRECTION_RTL
radioButton.setButtonDrawable(0) // for removing default drawable
radioButton.setCompoundDrawablePadding(10)
radioButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.gostyle_radio_button_selector, 0); // for adding drawable on the right
radioButton.gravity = Gravity.CENTER_VERTICAL
return radioButton
}