Android Studio 之 CheckBox
•任务
•基本用法
CheckBox,复选框,即可以同时选中多个选项。
![]()
![]()
从网上找了三个图标,分别命名为 apple.jpg , banana.jpg , oranges.jpg 放置在了 drawable 文件夹下。
实现代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:padding="10dp">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="选出你最喜欢的水果"
- android:textColor="#000000"
- android:textSize="20sp" />
- <CheckBox
- android:id="@+id/cb_1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:drawableRight="@drawable/apple" />
- <CheckBox
- android:id="@+id/cb_2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:drawableRight="@drawable/oranges" />
- <CheckBox
- android:id="@+id/cb_3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:drawableRight="@drawable/banana" />
- <Button
- android:id="@+id/btn_cb"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="提交"
- android:textColor="#000000"
- android:textSize="20sp" />
- </LinearLayout>
•自定义点击效果
实现代码如下:
- public class CheckBoxActivity extends AppCompatActivity {
- private CheckBox cb1;
- private CheckBox cb2;
- private CheckBox cb3;
- private Button btn;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_check_box);
- cb1 = findViewById(R.id.cb_1);//苹果
- cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (isChecked) {
- Toast.makeText(CheckBoxActivity.this, "apple", Toast.LENGTH_SHORT).show();
- }
- }
- });
- cb2 = findViewById(R.id.cb_2);//橘子
- cb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (isChecked) {
- Toast.makeText(CheckBoxActivity.this, "orangens", Toast.LENGTH_SHORT).show();
- }
- }
- });
- cb3 = findViewById(R.id.cb_3);//香蕉
- cb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (isChecked) {
- Toast.makeText(CheckBoxActivity.this, "banana", Toast.LENGTH_SHORT).show();
- }
- }
- });
- btn = findViewById(R.id.btn_cb);
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String choose = "";
- if (cb1.isChecked() || cb2.isChecked() || cb3.isChecked())
- choose += "你最喜欢的水果是:";
- else
- choose += "都不喜欢!";
- if (cb1.isChecked())
- choose += "apple";
- if (cb2.isChecked())
- choose += ",orangens";
- if (cb3.isChecked())
- choose += ",banana";
- Toast.makeText(CheckBoxActivity.this, choose, Toast.LENGTH_SHORT).show();
- }
- });
- }
- }
以上就是本次任务的实现代码。
如果可供选择的水果有好多个,那么为每个水果都设置一个点击事件略微显得有点臃肿,如何精简一下呢?
•精简Java代码
- public class CheckBoxActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
- private CheckBox cb1;
- private CheckBox cb2;
- private CheckBox cb3;
- private Button btn;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_check_box);
- cb1 = findViewById(R.id.cb_1);//苹果
- cb1.setOnCheckedChangeListener(this);
- cb2 = findViewById(R.id.cb_2);//橘子
- cb2.setOnCheckedChangeListener(this);
- cb3 = findViewById(R.id.cb_3);//香蕉
- cb3.setOnCheckedChangeListener(this);
- btn = findViewById(R.id.btn_cb);
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String choose = "";
- if (cb1.isChecked() || cb2.isChecked() || cb3.isChecked())
- choose += "你最喜欢的水果是:";
- else
- choose += "都不喜欢!";
- if (cb1.isChecked())
- choose += "apple";
- if (cb2.isChecked())
- choose += ",orangens";
- if (cb3.isChecked())
- choose += ",banana";
- Toast.makeText(CheckBoxActivity.this, choose, Toast.LENGTH_SHORT).show();
- }
- });
- }
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- String s = "";
- switch (buttonView.getId()) {
- case R.id.cb_1:
- s += "apple";
- break;
- case R.id.cb_2:
- s += "orangens";
- break;
- case R.id.cb_3:
- s += "banana";
- break;
- }
- Toast.makeText(CheckBoxActivity.this, s, Toast.LENGTH_SHORT).show();
- }
- }
cb1.setOnCheckedChangeListener(this); : 括号中直接使用了 this,前提是:
- 实现了 onCheckedChanged(CompoundButton buttonView, boolean isChecked) 方法
CheckBoxActivity implements CompoundButton.OnCheckedChangeListene
Android Studio 之 CheckBox的更多相关文章
- Intellij idea 和android studio 代码给混淆
Intellij idea 和android studio 代码给混淆 一.指令说明-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassna ...
- Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍
一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...
- android studio遇到的问题(记录总结)
SDK 无法更新解决方案 这个问题不是Android Studio的问题,而且由一些一些众所周知的原因导致的,我们这里说下解决办法. 打开SDK Manager,停止更新连接:在界面上方找Tools- ...
- Android Studio插件推荐(PreIOC,GsonFormat)
好的插件能加快项目的开发速度,尤其是一些针对重复性的代码的插件,所以在这里向大家推荐2款不错的插件,如果以后发现新的好的插件,还会继续推荐,同时欢迎大家推荐 GsonFormat GsonFormat ...
- [转]-Android Studio 快捷键整理分享-SadieYu
文章编辑整理:Android Studio 中文组 - SadieYu Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 ...
- Android Studio 学习 - 基本控件的使用;Intent初学
Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本 ...
- Android Studio 1.0 (稳定版) 完全攻略
这篇博文中主要从以下几点进行叙述: 1.Android Studio安装与使用 2.Android Studio特性 3.Android Studio优点 Android Studio 安装与使用 A ...
- Android Studio设置自己主动编project
在Eclipse自己主动编译兄弟习惯,刚搬到Android Studio.当然,错过这个功能,自己主动编译每次执行意味着更短的时间. Android Studio里面事实上也是有自己主动编译功能的,只 ...
- 外业数据采集平台(GPS+Android Studio+Arcgis for android 100.2.1)
外业数据采集平台 1. 综述 在室外,通过平板或者手机接收GPS坐标,实时绘制点.线.面数据,以便为后续进行海域监测.土地确权.地图绘图提供有效数据和依据. 2. 技术路线 Android studi ...
随机推荐
- Awesome Gatsby blog websites
Awesome Gatsby blog websites very simple very clean i18n dark mode (css var) demos https://overreact ...
- Flutter 1.17.x
Flutter 1.17.x Flutter (Channel stable, v1.17.3, on Mac OS X 10.15.5 19F101, locale en-CN) https://f ...
- H.265 & H.264
H.265 & H.264 HEVC (H.265) vs. AVC (H.264) https://en.wikipedia.org/wiki/High_Efficiency_Video_C ...
- IndexedDB All In One
IndexedDB All In One https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API https://develope ...
- API protocols All In One
API protocols All In One SOAP vs. REST vs. JSON-RPC vs. gRPC vs. GraphQL vs. Thrift https://www.mert ...
- VAST上线后,如何提升NGK算力生态的收益和流动性?
自比特币诞生以来,"挖矿"一词就成功地步入了大众的视野,也成为了加密货币领域最重要的组成部分之一.无论是早前基于比特币和以太坊为主的算力挖矿,还是逐步进入大众视野的质押挖矿,亦或是 ...
- 「NGK每日快讯」2021.1.8日NGK第66期官方快讯!
- 从微信小程序到鸿蒙js开发【06】——swiper&animator&marquee
目录: 1.swiper轮播图 2.image-animator幻灯片 3.marquee跑马灯 4.nginx动静分离 1.swiper轮播图 微信小程序的swiper组件中只能放置swiper-i ...
- 通过setMouseTracking实现用鼠标拖动控件
1 import sys 2 from PyQt5.Qt import * 3 4 class Mwindow(QWidget): 5 leftclick = False 6 7 def __init ...
- 类关系与uml图示表示
1. 关联(Association).聚合(Aggregation).组合(Composition)区别 association: 两者之间存在某种关联即可,很弱的关系,如student and co ...