•任务

  

•基本用法

  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的更多相关文章

  1. Intellij idea 和android studio 代码给混淆

    Intellij idea 和android studio 代码给混淆 一.指令说明-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassna ...

  2. Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍

    一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...

  3. android studio遇到的问题(记录总结)

    SDK 无法更新解决方案 这个问题不是Android Studio的问题,而且由一些一些众所周知的原因导致的,我们这里说下解决办法. 打开SDK Manager,停止更新连接:在界面上方找Tools- ...

  4. Android Studio插件推荐(PreIOC,GsonFormat)

    好的插件能加快项目的开发速度,尤其是一些针对重复性的代码的插件,所以在这里向大家推荐2款不错的插件,如果以后发现新的好的插件,还会继续推荐,同时欢迎大家推荐 GsonFormat GsonFormat ...

  5. [转]-Android Studio 快捷键整理分享-SadieYu

    文章编辑整理:Android Studio 中文组 - SadieYu Alt+回车 导入包,自动修正 Ctrl+N   查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L  格式化代码 ...

  6. Android Studio 学习 - 基本控件的使用;Intent初学

    Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本 ...

  7. Android Studio 1.0 (稳定版) 完全攻略

    这篇博文中主要从以下几点进行叙述: 1.Android Studio安装与使用 2.Android Studio特性 3.Android Studio优点 Android Studio 安装与使用 A ...

  8. Android Studio设置自己主动编project

    在Eclipse自己主动编译兄弟习惯,刚搬到Android Studio.当然,错过这个功能,自己主动编译每次执行意味着更短的时间. Android Studio里面事实上也是有自己主动编译功能的,只 ...

  9. 外业数据采集平台(GPS+Android Studio+Arcgis for android 100.2.1)

    外业数据采集平台 1. 综述 在室外,通过平板或者手机接收GPS坐标,实时绘制点.线.面数据,以便为后续进行海域监测.土地确权.地图绘图提供有效数据和依据. 2. 技术路线 Android studi ...

随机推荐

  1. 同城速递 & 同城跑腿 & 竞品分析

    同城速递 & 同城跑腿 & 竞品分析 toC / toB 闪送 https://www.ishansong.com/ https://www.tianyancha.com/compan ...

  2. c++ 设置桌面壁纸(win)

    #include <iostream> #include <Windows.h> int main() { const char* path = "C:\\Users ...

  3. Python爬虫_糗事百科

    本爬虫任务: 爬虫糗事百科网站(https://www.qiushibaike.com/)--段子版块中所有的[段子].[投票数].[神回复]等内容 步骤: 通过翻页寻找url规律,构造url列表 查 ...

  4. 在 2021 年你需要掌握的 7 种关于 JavaScript 的数组方法

    在新的一年我们学习这些有用的方法 JavaScript 为我们提供了许多处理数组的不同方法.我们将在几分钟内为您介绍 7 个基本且常用的数据方法,以提高您的 JS 开发技能. 1. Array.map ...

  5. 字符串拼接出现null的问题

    最近在开发的过程中遇到这样的问题,原因是在做一个需求的时候,要求将解密的号码和前缀进行拼接.一开始在这个拼接的过程中,没有考虑到数据校验的问题,因为有可能他的前缀或者其他需要拼接的字段在前端传递的过程 ...

  6. BigDecimalUtil:对double类型的数据进行处理(加减乘除、四舍五入、类型转换、比较两个值的大小)

    该工具类所在的包:import java.math.BigDecimal; 项目中使用该工具类的相关代码: // 如果Output表中已经存在该节点(插入数据的节点)的信息,则修改Output表中的这 ...

  7. 微信小程序优化:实现picker组件中input输入框禁止输入,而只能通过picker组件选择日期

    原来的代码如下: <view class="right">     <picker mode="date" value="{{mat ...

  8. Java基础语法:final修饰符

    一.final类 描述: 用'final'修饰的类不能被继承,没有子类. 例如,我们是无法写一个类去继承String类,然后对String类型扩展的,因为API中已经将String类定义为'final ...

  9. Snort + Barbyard2 + Snorby环境搭建

    1.环境 ubuntu-14.04.5 daq-2.0.7 Snort-2.9.15.1 Barbyard2 snorby Mysql Docker 2.架构 3.安装步骤 Ubuntu配置 如果是刚 ...

  10. 【图像处理】使用OpenCV+Python进行图像处理入门教程(二)

    这篇随笔介绍使用OpenCV进行图像处理的第二章 图像的运算,让我们踏上继续回顾OpenCV进行图像处理的奇妙之旅,不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 2  图像的运算 复杂的 ...