•任务

  

•基本用法

  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. React vs Vue in 2020

    React vs Vue in 2020 技术选型 React // UserProfile.jsx function UserProfile({id, showAvatar, onFollowCli ...

  2. javascript IIFE in depth

    javascript IIFE in depth function type 函数表达式 x = function (){ console.log(x); } ƒ (){ console.log(x) ...

  3. Flutter 使用p5

    p5 工作示例 install dependencies: p5: ^0.0.5 main.dart import 'package:flutter/material.dart'; import &q ...

  4. Flutter: 判断是Android还是Ios

    /// 在ui中使用下面的这个判断 Theme.of(context).platform == TargetPlatform.android /// 而不是 import 'dart:io' Plat ...

  5. vux使用

    Vue中使用vux的配置,分为两种情况: 一.根据vux文档直接安装,无需手动配置 npm install vue-cli -g // 如果还没安装 vue init airyland/vux2 my ...

  6. HANNAH WHITE:从Facebook谈坚持

    HANNAH WHITE于1993年毕业于加州斯坦福大学,被美国多家知名杂志评为最值得关注经济管理学杰出人才,2006年-2009年担任Doll资本管理公司部门主管,2009年-2013年担任Doll ...

  7. 为什么说USDN是一种应用型稳定币?

    USDN是由NGK Global出品的一种新型稳定币系统,里面是涵盖了包括货币供需.Bancor.抵押借贷等在内的一整套算法.该稳定币构想一经提出,便在社区引发了不小的热度. 官方对于USDN的定位是 ...

  8. PAA子公司在印度印度成立

    近日PAA房产又有大动作啦!在一片期待中,印度分公司正式成立!这是集团继泰国.越南.韩国.上海.成都.中国香港.中国台湾等分公司成立之后的又一扛鼎力作,更是PAA集团全球化战略布局的重要举措. 印度分 ...

  9. Python数据结构与算法_回文数(03)

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121输出: true 示例 2: 输入: -121输出: false解释: 从左向右读, ...

  10. 如何让别人访问我的电脑的vue项目

    步骤: 1.关闭防火墙. 2.修改build/webpack.dev.conf.js中的"const HOST = process.env.HOST"为"const HO ...