我正在创建一个应用程序,我想在2 * 2单选按钮中设计选项。为此,我正在做以下事情,但得到" android.widget.RelativeLayout无法转换为android.widget。单选按钮"错误
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TableRow>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</TableRow>
<TableRow>
<TextView android:id="@+id/textMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_marginTop="100dp"
android:gravity="center|left"/>
</TableRow>
<TableRow>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/group"
android:layout_marginLeft="25dp"
android:orientation="horizontal"
android:layout_span="2"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioButton android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/btn1"/>
<RadioButton android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn1" />
<RadioButton android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn2"
android:layout_toRightOf="@id/btn3"/>
</RelativeLayout>
</RadioGroup>
</TableRow>
<Button android:id="@+id/submitbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
android:visibility="gone"
android:layout_below="@id/group" />
<TextView android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/submitbtn"/>
</TableLayout>
请帮助我从早上起就被困住了。
答案 0 :(得分:0)
1.删除radiogroup。
2.将父布局视为相对
3.根据需要选择4个单选按钮
4.为所有单选按钮编写onclicklistener
5.在单选按钮-1中onclicklistener事件禁用其他按钮并为其他按钮执行此操作(设置检查特定按钮和其他设置未选中)
答案 1 :(得分:0)
首先,这取决于您的需求。但你可以这样做:Juste不使用RadioGroup,而是使用两个LinearLayouts:
<LinearLayoutLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1">
<RadioButton android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<RadioButton android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayoutLayout>
<LinearLayoutLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1">
<RadioButton android:id="@+id/btn3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<RadioButton android:id="@+id/btn4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayoutLayout>
然后您可以以编程方式引用它并取消选择所有其他按钮(如果按下一个按钮):
yourFirstRadioButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
YourSecondRadioButton.setChecked(false);
YourThirdRadiobutton.setChecked(false);
YourFourthRadioButton.setChecked(false);
}
});
您必须为所有单选按钮执行此操作。这只是一个简单的例子,你可以用更好的方式来做,例如使用for循环。例如,在创建RadioButtons之后,初始化RadioButtons数组:
private RadioButton[] radioButtons;
初始化所有radioButtons后初始化:
radioButtons = {radioButton1,radioButton2,radioButton3,radioButton4};
然后,创建一个setSelected(RadioButton按钮)方法:
private void setSelected(RadioButton button){
for(int i=0;i<radioButtons.length;i++){
if(radioButtons[i]!=button){
radioButtons[i].setChecked(false);
}
}
}
并在你的onClick()中调用它:
yourFirstRadioButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
setSelected(yourFirstRadioButton);
}
});
我可能在这里有一些错误的编码,因为我现在无法测试它,这里没有IDE。但是试试看,如果它不起作用就回来。
答案 2 :(得分:0)
删除Radio Group,为RadioButtons实现onClickListener并维护活动的单选按钮ID。像:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RadioButton
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClickButton" />
<RadioButton
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/btn1"
android:onClick="onClickButton" />
<RadioButton
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn1"
android:onClick="onClickButton" />
<RadioButton
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn2"
android:layout_toRightOf="@id/btn3"
android:onClick="onClickButton" />
</RelativeLayout>
然后,在你的活动中实现了RadioButtons的OnClick属性中提到的“onClickButton”方法:
private RadioButton checkedRadioButton;
// OnClick listener for Radio Buttons
public void onClickButton(View view) {
RadioButton radioButton = (RadioButton) view;
if (checkedRadioButton != null) {
checkedRadioButton.setChecked(false);
}
radioButton.setChecked(true);
checkedRadioButton = radioButton;
}
// Get the Active radio button ID
private int getCheckedRadiButtonId() {
if (checkedRadioButton != null) {
return checkedRadioButton.getId();
}
return 0;
}
U可以使用getCheckedRadiButtonId获取当前活动的radioButton Id。