是否可以动态地将单选按钮转换为复选框?

时间:2014-01-30 10:42:43

标签: android radio-button

我正在开发一个应用程序,其中包含多个选项问题。在这里,根据服务器响应,当用户单击按钮时,单选按钮应动态更改为复选框。这可能吗?

1 个答案:

答案 0 :(得分:1)

首先尝试这个XML布局::

<RelativeLayout
    android:id="@+id/rltRadio"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:visibility="visible">

    <RadioGroup
        android1:id="@+id/radioGroup1"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_alignParentLeft="true"
        >

        <RadioButton
            android1:id="@+id/radio0"
            android1:layout_width="wrap_content"
            android1:layout_height="wrap_content"
            android1:checked="true"
            android1:text="Option 1" />

        <RadioButton
            android1:id="@+id/radio1"
            android1:layout_width="wrap_content"
            android1:layout_height="wrap_content"
            android1:text="Option 2" />

        <RadioButton
            android1:id="@+id/radio2"
            android1:layout_width="wrap_content"
            android1:layout_height="wrap_content"
            android1:text="Option 3" />
    </RadioGroup>
</RelativeLayout>

<RelativeLayout
    android1:id="@+id/relativeLayout1"
    android1:layout_width="wrap_content"
    android1:layout_height="wrap_content"
    android:layout_below="@+id/rltRadio"
    android:visibility="gone" >
    <CheckBox
        android1:id="@+id/checkBox1"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:layout_alignParentLeft="true"        
        android1:text="CheckBox 1" />

<CheckBox
    android1:id="@+id/checkBox2"
    android1:layout_width="wrap_content"
    android1:layout_height="wrap_content"
    android1:layout_alignParentLeft="true"
    android1:layout_below="@+id/checkBox1"
    android1:text="CheckBox 2" />

<CheckBox
    android1:id="@+id/checkBox3"
    android1:layout_width="wrap_content"
    android1:layout_height="wrap_content"
    android1:layout_alignParentLeft="true"
    android1:layout_below="@+id/checkBox2"
    android1:text="CheckBox 3" />
</RelativeLayout>

<Button
    android1:id="@+id/button1"
    android1:layout_width="wrap_content"
    android1:layout_height="wrap_content"
    android1:layout_alignParentBottom="true"
    android1:layout_centerHorizontal="true"
    android1:layout_marginBottom="31dp"
    android1:text="Change Option" />

之后请添加此代码:

    import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RelativeLayout;

public class TestActivity extends Activity{

    RelativeLayout rltRadio,rltCheck;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);     
        setContentView(R.layout.radio_to_check);

        rltRadio=(RelativeLayout) findViewById(R.id.rltRadio);
        rltCheck=(RelativeLayout) findViewById(R.id.relativeLayout1);

        findViewById(R.id.button1).setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) {

                rltRadio.setVisibility(View.GONE);
                rltCheck.setVisibility(View.VISIBLE);
            }

        });
    }
}

如果您遵循这种方式,那么您就可以解决问题。请检查并提供反馈。