zoukankan      html  css  js  c++  java
  • 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这个包下的监听器,其里面的方法是:

         
        //  group表示当前选中的这一组的RadioGroup对象,checkId表示的是当前这组中选中的那个单选框的ID
         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!"); } }

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

        
        //  buttonView表示的就是当前调用这个方法的那个RadioButton对象,isChecked表示当前是否为选择
         public
    void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) { System.out.println("RadioButton is checked!"); } }
  • 相关阅读:
    【转】使用Javascript改变HTML内容 拓荒者
    【转】ASP.NET MVC 过滤器Filter 拓荒者
    【转】JavaScript简介 拓荒者
    edge.js架起node.js和.net互操作桥梁
    利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm
    nodejs上HTML分析利器nodejquery
    JavaScript 函数replace揭秘
    利用Node.js本地构建
    Angularjs的IOC Inject分析
    团队文化中的害群之马
  • 原文地址:https://www.cnblogs.com/xiaoluo501395377/p/3390873.html
Copyright © 2011-2022 走看看