2011-01-30 220 views
5

我有多個複選框,但我希望用戶只選擇一個複選框。我嘗試if-else語句,但它不可用。所以,我想知道,如何做到這一點。只選擇一個複選框

謝謝

+0

你爲什麼不使用單選按鈕? – jball 2011-01-30 17:08:43

回答

10

爲什麼不使用單選按鈕呢?他們完全是爲了這個。

但是,如果您堅持使用複選框,請修改選中任何複選框的事件,以便在選中時禁用其他複選框。

+0

不一樣嗎?那麼,我仍然需要禁用單選按鈕嗎?怎麼做?謝謝ka – Yoo 2011-01-30 17:20:32

0

我這樣做:

- 在我的佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:alignmentMode="alignBounds" 
    android:columnCount="1" 
    android:background="#ff99f6ff" 
    > 

    <ImageView 
     android:id="@+id/escudo" 
     android:layout_width="250dp" 
     android:layout_height="250dp" 
     android:layout_gravity="center_horizontal|fill_vertical" 
     android:src="@drawable/dicon2" 
     android:contentDescription="foto logo" 
     android:layout_marginTop="30dp" 
     android:layout_alignParentTop="false" 
     android:layout_centerInParent="true" /> 

    <Button 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_gravity="top" 
     android:layout_below="@+id/radioGroup" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="48dp" /> 

    <RadioGroup 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/radioGroup" 
     android:orientation="horizontal" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="34dp" 
     android:gravity="center_horizontal" 
     android:checkedButton="1" 
     > 

     <CheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_a" 
      android:id="@+id/checkBoxA" 
      android:layout_above="@+id/escudo" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:onClick="onCheckboxClicked" /> 

     <CheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_b" 
      android:id="@+id/checkBoxB" 
      android:layout_alignTop="@+id/checkBoxA" 
      android:layout_toRightOf="@+id/checkBoxA" 
      android:layout_toEndOf="@+id/checkBoxA" 
      android:onClick="onCheckboxClicked"/> 

     <CheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_c" 
      android:id="@+id/checkBoxC" 
      android:layout_alignTop="@+id/checkBoxB" 
      android:layout_toRightOf="@+id/checkBoxB" 
      android:layout_toEndOf="@+id/checkBoxB" 
      android:onClick="onCheckboxClicked"/> 

    </RadioGroup> 
</RelativeLayout> 


import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.CheckBox; 

public class MainActivity extends ActionBarActivity { 

    private CheckBox checkBoxA, checkBoxB, checkBoxC; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     checkBoxA = (CheckBox) findViewById(R.id.checkBoxA); 
     checkBoxB = (CheckBox) findViewById(R.id.checkBoxB); 
     checkBoxC = (CheckBox) findViewById(R.id.checkBoxC); 
    } 

    public void onCheckboxClicked(View view) { 

     switch(view.getId()) { 

      case R.id.checkBoxA: 

        checkBoxB.setChecked(false); 
        checkBoxC.setChecked(false); 

       break; 

      case R.id.checkBoxB: 

        checkBoxC.setChecked(false); 
        checkBoxA.setChecked(false); 

       break; 

      case R.id.checkBoxC: 

        checkBoxA.setChecked(false); 
        checkBoxB.setChecked(false); 

       break; 
     } 
    } 
} 
相關問題