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 ...
随机推荐
- 瞧一瞧React Fiber
啥是React Fiber? React Fiber,简单来说就是一个从React v16开始引入的新协调引擎,用来实现Virtual DOM的增量渲染. 说人话:就是一种能让React视图更新过程变 ...
- [转]ROS订阅激光数据
https://github.com/robopeak/rplidar_ros/blob/master/src/client.cpp /* * Copyright (c) 2014, RoboPe ...
- Python算法_递归:汉诺塔
游戏链接:https://zhangxiaoleiv.github.io/app/TowerOfHanoi/Hanoi.html 汉诺塔游戏算法: 1 def hanoi(n,x,y,z): 2 if ...
- 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度
题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...
- Mybatis-06 动态Sql
Mybatis-06 动态Sql 多对一处理 多个学生,对应一个老师 对于学生这边而言,关联多个学生,关联一个老师 [多对一] 对于老师而言,集合,一个老师又很多学生 [一对多] 1.创建数据库 2. ...
- c# winform中窗体切换后释放及防止重复生成
问题1:窗体切换后如何关闭,并释放资? c# winform中,2个窗体,form1和form2,互相切换的时候执行 this.Hide(); Form2 form2 = new Form2(); f ...
- Mybatis初步认识
分三层 第一章 1.三层架构 界面层:和用户打交道,接收用户的请求参数明显是处理结果的(jsp,html,servlet) 业务逻辑层:接收了界面层传递的数据,计算逻辑,调用数据库,获取数据 数据访问 ...
- 检查字符串是否包含另一串字符串(c++)
在c++中检查字符串是否包含另一串字符串,这个本来是我做过的一个算法题,不过最近刚好有个需求让我想到了这个题,就在此记录一下! 使用std::string::findfunction string s ...
- Pycharm模块导入失败,带有红色波浪线。
在Pycharm中打开一个python开源工程,结果在导入库的部分一堆红色波浪线显示错误,并且按住Ctrl + 鼠标左击无法跳转到指定类或方法,如下图所示. 解决方法: (1)首先忽略掉这些报错,先运 ...
- 【转载】KMP入门级别算法详解--终于解决了(next数组详解)
[转载]https://blog.csdn.net/LEE18254290736/article/details/77278769 对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O ...

