Android UI系列-----CheckBox和RadioButton(1)

主要记录一下CheckBox多选框和RadioGroup、RadioButton单选框的设置以及注册监听器

1.CheckBox

布局文件:

复制代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >    <CheckBox 
        android:id="@+id/eatId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="吃饭"/>    
    <CheckBox 
        android:id="@+id/sleepId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="睡觉"/>    
    <CheckBox 
        android:id="@+id/playId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="玩游戏"/>    
    <CheckBox        android:id="@+id/allId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="全选"/></LinearLayout>

复制代码

MainActivity:

复制代码

public class MainActivity extends Activity
{    private CheckBox eatBox;    private CheckBox sleepBox;    private CheckBox playBox;    private CheckBox allBox;

    @Override    protected void onCreate(Bundle savedInstanceState)
    {        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        eatBox = (CheckBox) findViewById(R.id.eatId);
        sleepBox = (CheckBox) findViewById(R.id.sleepId);
        playBox = (CheckBox) findViewById(R.id.playId);
        allBox = (CheckBox) findViewById(R.id.allId);        // OnBoxClickListener listener = new OnBoxClickListener();//        OnBoxCheckedListener listener2 = new OnBoxCheckedListener();
        CheckedBoxListener listener3 = new CheckedBoxListener();        // eatBox.setOnClickListener(listener);        // sleepBox.setOnClickListener(listener);        // playBox.setOnClickListener(listener);
        eatBox.setOnCheckedChangeListener(listener3);
        sleepBox.setOnCheckedChangeListener(listener3);
        playBox.setOnCheckedChangeListener(listener3);

        allBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
        {
            @Override            public void onCheckedChanged(CompoundButton buttonView,                    boolean isChecked)
            {
                eatBox.setChecked(isChecked);
                sleepBox.setChecked(isChecked);
                playBox.setChecked(isChecked);
            }
        });
    }    class CheckedBoxListener implements OnCheckedChangeListener
    {        private int count = 0;

        @Override        public void onCheckedChanged(CompoundButton buttonView,                boolean isChecked)
        {            if (isChecked)
            {
                count++;                if (count == 3)
                {
                    allBox.setChecked(isChecked);
                }
            }            else
            {
                count--;
                allBox.setChecked(isChecked);
            }
        }
    }
    
    @Override    public boolean onCreateOptionsMenu(Menu menu)
    {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;
    }    // CheckBox点击监听器    class OnBoxClickListener implements OnClickListener
    {
        @Override        public void onClick(View view)
        {
            CheckBox box = (CheckBox) view;            if (box.getId() == R.id.eatId)
            {
                System.out.println("eatBox");
            } else if (box.getId() == R.id.sleepId)
            {
                System.out.println("sleepBox");
            } else if (box.getId() == R.id.playId)
            {
                System.out.println("playBox");
            }            if (box.isChecked())
            {
                System.out.println("Box is checked");
            } else
            {
                System.out.println("Box is unChecked");
            }
            System.out.println("CheckBox is clicked!");
        }
    }    // CheckBox状态改变监听器    class OnBoxCheckedListener implements OnCheckedChangeListener
    {
        @Override        public void onCheckedChanged(CompoundButton buttonView,                boolean isChecked)
        {
            CheckBox box = (CheckBox) buttonView;            if (box.getId() == R.id.eatId)
            {
                System.out.println("eatBox");
            } else if (box.getId() == R.id.sleepId)
            {
                System.out.println("sleepBox");
            } else if (box.getId() == R.id.playId)
            {
                System.out.println("playBox");
            }            if (isChecked)
            {
                System.out.println(box.getText() + " is checked!");
            } else
            {
                System.out.println(box.getText() + " is unchecked!");
            }
        }
    }

}

复制代码

2.RadioGroup和RadioButton

RadioGroup中可以放置多个RadioButton单选框,位于同一RadioGroup中的RadioButton每次只能选择一个

复制代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >    <RadioGroup 
        android:id="@+id/radioGroupId1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">        
        <RadioButton 
            android:id="@+id/femailButtonId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"/>        
        <RadioButton            android:id="@+id/maleButtonId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"/>    </RadioGroup>    
    <RadioGroup 
        android:id="@+id/raidoGroupId2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">        <RadioButton 
            android:id="@+id/womenButtonId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="women"/>        <RadioButton 
            android:id="@+id/manButtonId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="man"/>    </RadioGroup>    </LinearLayout>

复制代码

MainActivity:

复制代码

public class MainActivity extends Activity
{
    private RadioGroup radioGroup;
    private RadioButton femaleRadio;
    private RadioButton maleRadio;
    private RadioGroup radioGroup2;
    private RadioButton womenRadio;
    private RadioButton manRadio;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        radioGroup = (RadioGroup)findViewById(R.id.radioGroupId1);
        femaleRadio = (RadioButton)findViewById(R.id.femailButtonId);
        maleRadio = (RadioButton)findViewById(R.id.maleButtonId);
        radioGroup2 = (RadioGroup)findViewById(R.id.raidoGroupId2);
        womenRadio = (RadioButton)findViewById(R.id.womenButtonId);
        manRadio = (RadioButton)findViewById(R.id.manButtonId);
        
        RadioGroupListener listener = new RadioGroupListener();
        radioGroup.setOnCheckedChangeListener(listener);
        radioGroup2.setOnCheckedChangeListener(listener);
    }

    class RadioGroupListener implements OnCheckedChangeListener
    {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId)
        {
            if(checkedId == femaleRadio.getId() || checkedId == womenRadio.getId())
            {
                womenRadio.setChecked(true);
                femaleRadio.setChecked(true);
                System.out.println("femaleRadio is cheched!");
            }
            else if(checkedId == maleRadio.getId() || checkedId == manRadio.getId())
            {
                manRadio.setChecked(true);
                maleRadio.setChecked(true);
                System.out.println("maleRadio is checked!");
            }
        }
    }
    
    class RadioButtonListener implements android.widget.CompoundButton.OnCheckedChangeListener
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked)
        {
            if(isChecked)
            {
                System.out.println("RadioButton is checked!");
            }
        }
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

复制代码

注意:我们可以给RadioGroup注册一个OnCheckedChangeListener,引用的是android.widget.RadioGroup.OnCheckedChangeListener这个包下的监听器,其里面的方法是:

复制代码

  onCheckedChanged(RadioGroup group, (checkedId == femaleRadio.getId() || checkedId =="femaleRadio is cheched!" (checkedId == maleRadio.getId() || checkedId =="maleRadio is checked!"

复制代码

而我们还可以给每个RadioButton注册一个OnCheckedChangeListener,但是这里就要使用 android.widget.CompoundButton.OnCheckedChangeListener 这个监听器类,其里面的方法:

复制代码

 "RadioButton is checked!"

复制代码

 

你可能感兴趣的:(android)