Android13--常见控件(二)

标签: Android

创建时间:2016-9-24 09:56:47
更新时间:2016-9-24 14:43:30


undefined

RadioButton(单选按钮) #

安卓提供了RadioGroup和RadioGroup来设计单选按钮。示例:

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context="com.a52fhy.learnwidget2.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请选择性别:"
        android:textSize="22dp"/>

    <RadioGroup
        android:id="@+id/RadioGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            android:checked="true"/>

        <RadioButton
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"/>
    </RadioGroup>

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交" />

</LinearLayout>

需要为某个单选按钮设置id。

如何读取选中的值呢?有两种方法:1、设置选项值改变时的监听(setOnCheckedChangeListener);2、遍历所有单选框,获取选中的按钮的值。

//轻触获取radio值
//为RadioButton设置一个事件监听器setOnCheckChangeListener
RadioGroup rg = (RadioGroup) findViewById(R.id.RadioGroup);
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        RadioButton btn = (RadioButton) findViewById(checkedId);
        Toast.makeText(getApplicationContext(), btn.getText(), Toast.LENGTH_SHORT).show();
    }
});

//通过循环获取radio值
//getChildCont( )获得按钮组中的单选按钮的数目;
//getChinldAt(i):根据索引值获取我们的单选按钮
//isChecked( ):判断按钮是否选中
findViewById(R.id.btnSubmit).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        RadioGroup rg = (RadioGroup)findViewById(R.id.RadioGroup);
        int rg_count = rg.getChildCount();
        for(int i=0; i<rg_count; i++){
            RadioButton btn = (RadioButton) rg.getChildAt(i); //获取每个radio
            if(btn.isChecked()){
                Log.i("debug", "你的选择是:" + btn.getText() );
                Toast.makeText(getApplicationContext(), "你的选择是:" + btn.getText(), Toast.LENGTH_SHORT).show();
            }
        }
    }
});

当我们轻触按钮或者点击提交,可以获取选中的值。

CheckBox(复选框) #

复选框使用CheckBox表示:

<CheckBox
android:id="@+id/cb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"/>

<CheckBox
android:id="@+id/cb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="JAVA"
android:checked="true"/>

<CheckBox
android:id="@+id/cb3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PHP"/>

<Button
android:id="@+id/btnSubmit2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提交2" />

选中的值和单选按钮获取的方式类型:1、为每个checkbox绑定回调;2、通过checkbox判断是否选中,直接取值:

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener, View.OnClickListener {

    private CheckBox cb1;
    private CheckBox cb2;
    private CheckBox cb3;

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

        //轻触获取
        cb1 = (CheckBox) findViewById(R.id.cb1);
        cb2 = (CheckBox) findViewById(R.id.cb2);
        cb3 = (CheckBox) findViewById(R.id.cb3);
        cb1.setOnCheckedChangeListener(this);
        cb2.setOnCheckedChangeListener(this);
        cb3.setOnCheckedChangeListener(this);

        Button btnSubmit2 = (Button) findViewById(R.id.btnSubmit2);
        btnSubmit2.setOnClickListener(this);

    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(buttonView.isChecked()){
            Toast.makeText(getApplicationContext(), buttonView.getText(), Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onClick(View v) {
        String str = "您选择的是:";
        if(cb1.isChecked()) str += cb1.getText() + " ";
        if(cb2.isChecked()) str += cb2.getText() + " ";
        if(cb3.isChecked()) str += cb3.getText() + " ";

        Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
    }
}
Build by Loppo 0.6.6