Android学习笔记十一之Android基础UI二

Android学习笔记十一之Android基础UI二

RadioButton单选按钮

  RadioButton单选按钮,通常与RadioGroup一起使用才可以实现互斥的单选效果,如果是单独使用不是单选效果。RadioButton不能像CheckBox那样选中了不能取消选中,只能通过选择其他选项取消当前选项。通过设置setOnCheckedChangeListener对单选进行监听,当然,也可以通过按钮点击事件获取选择的值。下面实现这两种方法:

第一种,设置setOnCheckedChangeListener事件监听,实现代码如下:

tv_select_1 = (TextView) findViewById(R.id.tv_select_1);
rg1 = (RadioGroup) findViewById(R.id.rg1);
rg1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            RadioButton radioButton = (RadioButton) radioGroup.findViewById(i);
            tv_select_1.setText("你的性别是:" + radioButton.getText());
        }
    });

第二种,通过点击事件,获取选中的值,代码如下:

tv_select_2 = (TextView) findViewById(R.id.tv_select_2);
rg2 = (RadioGroup) findViewById(R.id.rg2);
btn_submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            for (int i = 0; i < rg2.getChildCount(); i++) {
                RadioButton radioButton = (RadioButton) rg2.getChildAt(i);
                if (radioButton.isChecked()) {
                    tv_select_2.setText("你选择的爱好是:" + radioButton.getText());
                    break;
                }
            }
        }
    });

布局代码就不贴了,放上实现效果图:

CheckBox多选框

  CheckBox多选按钮框,可以同时选择多个,选中的情况下可以单击取消选择,可以为每一个CheckBox设置事件监听器,也可以通过点击事件来判断哪些CheckBox被选择,下面是实现方式:

第一种,为每一个CheckBox设置监听,实现代码如下:

    cb_sport_1 = (CheckBox) findViewById(R.id.cb_sport_1);
    cb_sport_2 = (CheckBox) findViewById(R.id.cb_sport_2);
    cb_sport_3 = (CheckBox) findViewById(R.id.cb_sport_3);
    cb_sport_4 = (CheckBox) findViewById(R.id.cb_sport_4);
    cb_sport_1.setOnCheckedChangeListener(this);
    cb_sport_2.setOnCheckedChangeListener(this);
    cb_sport_3.setOnCheckedChangeListener(this);
    cb_sport_4.setOnCheckedChangeListener(this);

    tv_check_1 = (TextView) findViewById(R.id.tv_check_1);
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
    StringBuffer buffer = new StringBuffer("你喜欢的运动有:");
    if (compoundButton.isChecked()) {
        buffer.append(compoundButton.getText());
        tv_check_1.setText(buffer.toString());
    }
}

第二种,实现一个点击事件,代码如下:

    cb_fruit_1 = (CheckBox) findViewById(R.id.cb_fruit_1);
    cb_fruit_2 = (CheckBox) findViewById(R.id.cb_fruit_2);
    cb_fruit_3 = (CheckBox) findViewById(R.id.cb_fruit_3);
    cb_fruit_4 = (CheckBox) findViewById(R.id.cb_fruit_4);
    cb_fruit_5 = (CheckBox) findViewById(R.id.cb_fruit_5);

    btn_checkbox_select = (Button) findViewById(R.id.btn_checkbox_select);

    tv_check_2 = (TextView) findViewById(R.id.tv_check_2);

    btn_checkbox_select.setOnClickListener(this);

    @Override
    public void onClick(View view) {
    StringBuffer buffer = new StringBuffer();
    buffer.append("你喜欢的水果是:");
    if (cb_fruit_1.isChecked()) {
        buffer.append(cb_fruit_1.getText());
    }
    if (cb_fruit_2.isChecked()) {
        buffer.append(cb_fruit_2.getText());
    }
    if (cb_fruit_3.isChecked()) {
        buffer.append(cb_fruit_3.getText());
    }
    if (cb_fruit_4.isChecked()) {
        buffer.append(cb_fruit_4.getText());
    }
    if (cb_fruit_5.isChecked()) {
        buffer.append(cb_fruit_5.getText());
    }
    tv_check_2.setText(buffer.toString());
}

最后实现效果如下:

Spinner下拉列表

  Spinner提供了从一个数据集合中快速选择一项值的办法。默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值。下面介绍spinner的基本用法:

Spinner控件的基本属性:
1、entries属性: 设置改属性,可以直接在xml布局文件中绑定数据源,也可以不设置,在代码中动态绑定数据源
2、spinnerMode属性: Spinner的显示形式,Spinner菜单的两种显示方式,弹出框和下拉列表,通过设置spinnerMode的值可以设置显示方式
android:spinnerMode="dropdown"
android:spinnerMode="dialog"
3、android:dropDownHorizontalOffset:设置列表框的水平偏移距离
4、android:dropDownVerticalOffset:设置列表框的水平竖直距离
5、android:dropDownSelector:列表框被选中时的背景
6、android:dropDownWidth:设置下拉列表框的宽度
7、android:gravity:设置里面组件的对其方式
8、android:popupBackground:设置列表框的背景
9、android:prompt:设置对话框模式的列表框的提示信息(标题),只能够引用string.xml 中的资源id,而不能直接写字符串

下面通过使用ArrayAdapter进行适配数据和自定义适配器实现Spinner:

使用ArrayAdapter进行适配数据:

String[] names = getResources().getStringArray(R.array.spinner_name);
    spinner_first = (Spinner) findViewById(R.id.spinner_first);
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, names);
    tv_spinner_result1 = (TextView) findViewById(R.id.tv_spinner_result1);
    spinner_first.setAdapter(arrayAdapter);
    spinner_first.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            String result = adapterView.getItemAtPosition(i).toString();
            tv_spinner_result1.setText("你选择的水果是:" + result);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

使用自定义适配器实现(推荐使用):

 private class SpinnerAdapter extends BaseAdapter {
    private String[] names = {"Java语言", "C语言", "C++语言", "JavaScript", "PHP语言", "Swift语言"};

    @Override
    public int getCount() {
        return names.length;
    }

    @Override
    public Object getItem(int i) {
        return names[i];
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder viewHolder;
        if (view == null) {
            view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_spinner, null);
            viewHolder = new ViewHolder();
            viewHolder.textView = (TextView) view.findViewById(R.id.tv_spinner_adapter);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }
        viewHolder.textView.setText(names[i]);
        return view;
    }
}

static class ViewHolder {
    TextView textView;
}

    spinnerAdapter = new SpinnerAdapter();
    spinner_second = (Spinner) findViewById(R.id.spinner_second);
    tv_spinner_result2 = (TextView) findViewById(R.id.tv_spinner_result2);
    spinner_second.setAdapter(spinnerAdapter);
    spinner_second.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            String result = adapterView.getItemAtPosition(i).toString();
            tv_spinner_result2.setText("你选择的编程语言是:" + result);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

前面一个类是自定义适配器,这种写法比较简单。自定义适配器可以定义自己需要的样式,而且实现起来可以有很多的自由行。

效果图:

附上RadioButton单选按钮、CheckBox多选框、Spinner下拉列表的API:

RadioButton单选按钮

CheckBox多选框

Spinner下拉列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值