•任务

  

•基本用法

  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. 设计模式六大原则 All In one

    设计模式六大原则 All In one 开闭原则: 对扩展开放,对修改关闭; 设计模式的六大原则: 0.总原则-开闭原则 对扩展开放, 对修改封闭; 在程序需要进行拓展的时候, 不能去修改原有的代码, ...

  2. Twitter 分享

    Twitter 分享 Twitter Share API https://twitter.com/intent/tweet?url= &text= demo ?url= https://www ...

  3. js generator和yield

    function co<T>(fn: () => Generator<any, any, any>): Promise<T> { const g: Gener ...

  4. C++算法代码——和为给定数

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?cid=1376&pid=0 题目描述 给出若干个整数,询问其中是否有一对数的和等于给 ...

  5. python进阶(1)Lambda表达式

    Lambda表达式 lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数 语法 函数名 = lambda 参数:返回值 注意点 1.函数的参数可以有多个,多个参数之间用逗号隔 ...

  6. 通过webhost扩展方式初始化EFCore数据库

    通过webhost扩展方式初始化EFCore数据库 EFCore数据库初始化  1.定义WebHostMigrationExtensions类 public static class WebHostM ...

  7. macOS启动Kafka

    目录 kafka目录结构 先启动zookeeper 后启动kafka 创建topic 创建一个生产者 创建一个消费者 kafka目录结构 # kafka安装目录 /usr/local/Cellar/k ...

  8. 只需2分钟!PC端的报表即可转换成手机报表

    转: 只需2分钟!PC端的报表即可转换成手机报表 手机制作报表,这个大家不知有没有尝试过,虽然我们平时都用电脑做,但是电脑要是不在身边了,手机就可以用来应应急.但其实小编并没有在手机上制作报表的实践经 ...

  9. Gym100923H Por Costel and the Match

    题目链接:http://codeforces.com/gym/100923/problem/H 分析:并查集,用enemy储存x的敌人,用weight储存权重决定根节点 需用scanf和puts输入输 ...

  10. 如何在 ASP.NET Core 中写出更干净的 Controller

    你可以遵循一些最佳实践来写出更干净的 Controller,一般我们称这种方法写出来的 Controller 为瘦Controller,瘦 Controller 的好处在于拥有更少的代码,更加单一的职 ...