您能告诉我如何设置RadioButton的背景颜色吗? 如果用户选择是,背景颜色应更改为绿色 当用户选择否时,背景颜色应更改为红色。
这是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include layout="@layout/header" />
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:stretchColumns="2" >
<TableRow android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFF00" >
<TextView
android:layout_height="wrap_content"
android:layout_width="0dp"
android:padding="5dp"
android:text="Eligibility confirmed:"
android:layout_weight=".5"/>
<RadioGroup
android:id="@+id/eligibility"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:orientation="horizontal"
android:layout_weight=".5" >
<RadioButton
android:id="@+id/eligibilityYes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="yes" />
<RadioButton
android:id="@+id/eligibilityNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No" />
</RadioGroup>
</TableRow>
<TableRow
android:focusable="true"
android:focusableInTouchMode="true"
android:background="#FFFF00" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="Informed consent given and explained:"
android:layout_weight=".5"
/>
<RadioGroup
android:id="@+id/explained"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight=".5">
<RadioButton
android:id="@+id/explainedYes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="yes" />
<RadioButton
android:id="@+id/explainedNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No" />
</RadioGroup>
</TableRow>
</TableLayout>
<!--
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="ClickMe"/>
-->
</LinearLayout>
答案 0 :(得分:4)
你应该试试这种方式.. 希望这对你有帮助....
<RadioGroup
android:id="@+id/eligibility"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:orientation="horizontal"
android:layout_weight=".5" >
<RadioButton
android:id="@+id/eligibilityYes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:background="@drawable/checkbox_background"
android:text="yes" />
<RadioButton
android:id="@+id/eligibilityNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/checkbox_background"
android:text="No" />
</RadioGroup>
您的checkbox_background.xml文件将图像放入res / drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/radio_rad" />
<item android:state_checked="true" android:drawable="@drawable/radio_green" />
</selector>
答案 1 :(得分:3)
android:RadioButton的按钮参数。 实施例 -
<RadioButton
android:id="@+id/rb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/radio_button_selector"
android:textColor="@color/white" />
radio_button_selector.xml -
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/radio_button" android:state_checked="false"/>
<item android:drawable="@drawable/radio_button_dark" android:state_checked="true" />
</selector>
在radiobutton checked listener上,如果选中单选按钮,则可以设置单选按钮.setbackground(..)
答案 2 :(得分:2)
试试这个......
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton = (RadioButton) group.findViewById(checkedId);
if(radioButton.getText().equals("yes")) {
radioButton.setBackgroundColor(Color.GREEN);
} else {
radioButton.setBackgroundColor(Color.RED);
}
}
});