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 ...
随机推荐
- git alias all in one
git alias all in one workspace:工作区 staging area:暂存区/缓存区 local repository:或本地仓库 remote repository:远程仓 ...
- Raspberry Pi & GPIO
Raspberry Pi & GPIO pinout === pin out / p in out pi@raspberrypi:~ $ pinout ,------------------- ...
- git & github & git clone & 'git clone' failed with status 128
git & github & git clone & 'git clone' failed with status 128 'git clone' failed with st ...
- NGK内存将为全球投资者创造新的财富增长机会
2020年,随着BTC的持续上涨带动了整个区块链市场的持续加温,同时金融市场也对金融体制做出了改变,关于金融和区块链的结合越来越被人们所认可,在此基础上,DeFi行业借此迎来了快速发展,据不完全统计, ...
- django学习-1.开始hello world!
1.前言 当你想走上测试开发之路,用python开发出一个web页面的时候,需要找一个支持python语言的web框架.django框架有丰富的文档和学习资料,也是非常成熟的web开发框架,想学pyt ...
- HTML+CSS+JS速查手册下载
下载链接:https://files.cnblogs.com/files/waterr/HTML_CSS_JS%E9%80%9F%E6%9F%A5.zip
- Python数据结构与算法_反转字符串(08)
编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这一问题. 你可以 ...
- ffmpeg:为视频添加静态水印
在ffmpeg中,添加水印需要用overlay滤镜,这是一个复杂滤镜,因为它需要两个输入,默认第一个输入是主画面,第二输入为水印,先执行一个简单的看看. 下面有两个文件,一个是可爱的大雄兔,一个是可爱 ...
- 2021-2-27:Linux 下如何优化 Java MMAP 写入
主要是调整 pdflush 相关参数. 在linux操作系统中,写操作是异步的,即写操作返回的时候数据并没有真正写到磁盘上,而是先写到了系统cache里,随后由pdflush内核线程将系统中的脏页写到 ...
- 基于element-ui封装一个Table模板组件
大家在做后台管理系统的时候,写的最多的可能就是表格页面了,一般分三部分:搜索功能区.表格内容区和分页器区.一般这些功能都是使用第三方组件库实现,比如说element-ui,或者vuetify.这两个组 ...

