android设置单选按钮从文本

时间:2015-12-04 06:48:15

标签: android android-layout android-radiobutton

早上好!

我想在他的文字中设置一个单选按钮。 我在这里看到了这样的解决方案:

 <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" />

这会在他的文字中设置单选按钮,但我不喜欢替代单选按钮的样式,我可以使用此代码。

有没有办法使用默认的单选按钮样式?

5 个答案:

答案 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>

结果:

enter image description here

问题: 我想以编程方式在开头隐藏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

  }