•任务

  

•基本用法

  CheckBox,复选框,即可以同时选中多个选项。

      

  从网上找了三个图标,分别命名为 apple.jpg , banana.jpg , oranges.jpg 放置在了 drawable 文件夹下。

  实现代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. android:padding="10dp">
  7.  
  8. <TextView
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="选出你最喜欢的水果"
  12. android:textColor="#000000"
  13. android:textSize="20sp" />
  14.  
  15. <CheckBox
  16. android:id="@+id/cb_1"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:layout_marginTop="10dp"
  20. android:drawableRight="@drawable/apple" />
  21.  
  22. <CheckBox
  23. android:id="@+id/cb_2"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:layout_marginTop="10dp"
  27. android:drawableRight="@drawable/oranges" />
  28.  
  29. <CheckBox
  30. android:id="@+id/cb_3"
  31. android:layout_width="wrap_content"
  32. android:layout_height="wrap_content"
  33. android:layout_marginTop="10dp"
  34. android:drawableRight="@drawable/banana" />
  35.  
  36. <Button
  37. android:id="@+id/btn_cb"
  38. android:layout_width="wrap_content"
  39. android:layout_height="wrap_content"
  40. android:text="提交"
  41. android:textColor="#000000"
  42. android:textSize="20sp" />
  43.  
  44. </LinearLayout>

•自定义点击效果

  实现代码如下:

  1. public class CheckBoxActivity extends AppCompatActivity {
  2.  
  3. private CheckBox cb1;
  4. private CheckBox cb2;
  5. private CheckBox cb3;
  6. private Button btn;
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_check_box);
  12.  
  13. cb1 = findViewById(R.id.cb_1);//苹果
  14. cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  15.  
  16. @Override
  17. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  18. if (isChecked) {
  19. Toast.makeText(CheckBoxActivity.this, "apple", Toast.LENGTH_SHORT).show();
  20. }
  21. }
  22. });
  23.  
  24. cb2 = findViewById(R.id.cb_2);//橘子
  25. cb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  26.  
  27. @Override
  28. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  29. if (isChecked) {
  30. Toast.makeText(CheckBoxActivity.this, "orangens", Toast.LENGTH_SHORT).show();
  31. }
  32. }
  33. });
  34.  
  35. cb3 = findViewById(R.id.cb_3);//香蕉
  36. cb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  37. @Override
  38. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  39. if (isChecked) {
  40. Toast.makeText(CheckBoxActivity.this, "banana", Toast.LENGTH_SHORT).show();
  41. }
  42. }
  43. });
  44.  
  45. btn = findViewById(R.id.btn_cb);
  46. btn.setOnClickListener(new View.OnClickListener() {
  47. @Override
  48. public void onClick(View v) {
  49. String choose = "";
  50. if (cb1.isChecked() || cb2.isChecked() || cb3.isChecked())
  51. choose += "你最喜欢的水果是:";
  52. else
  53. choose += "都不喜欢!";
  54.  
  55. if (cb1.isChecked())
  56. choose += "apple";
  57. if (cb2.isChecked())
  58. choose += ",orangens";
  59. if (cb3.isChecked())
  60. choose += ",banana";
  61. Toast.makeText(CheckBoxActivity.this, choose, Toast.LENGTH_SHORT).show();
  62. }
  63. });
  64.  
  65. }
  66. }

  以上就是本次任务的实现代码。

  如果可供选择的水果有好多个,那么为每个水果都设置一个点击事件略微显得有点臃肿,如何精简一下呢?

•精简Java代码

  1. public class CheckBoxActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
  2.  
  3. private CheckBox cb1;
  4. private CheckBox cb2;
  5. private CheckBox cb3;
  6. private Button btn;
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_check_box);
  12.  
  13. cb1 = findViewById(R.id.cb_1);//苹果
  14. cb1.setOnCheckedChangeListener(this);
  15.  
  16. cb2 = findViewById(R.id.cb_2);//橘子
  17. cb2.setOnCheckedChangeListener(this);
  18.  
  19. cb3 = findViewById(R.id.cb_3);//香蕉
  20. cb3.setOnCheckedChangeListener(this);
  21.  
  22. btn = findViewById(R.id.btn_cb);
  23. btn.setOnClickListener(new View.OnClickListener() {
  24. @Override
  25. public void onClick(View v) {
  26. String choose = "";
  27. if (cb1.isChecked() || cb2.isChecked() || cb3.isChecked())
  28. choose += "你最喜欢的水果是:";
  29. else
  30. choose += "都不喜欢!";
  31.  
  32. if (cb1.isChecked())
  33. choose += "apple";
  34. if (cb2.isChecked())
  35. choose += ",orangens";
  36. if (cb3.isChecked())
  37. choose += ",banana";
  38. Toast.makeText(CheckBoxActivity.this, choose, Toast.LENGTH_SHORT).show();
  39. }
  40. });
  41. }
  42.  
  43. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  44. String s = "";
  45. switch (buttonView.getId()) {
  46. case R.id.cb_1:
  47. s += "apple";
  48. break;
  49. case R.id.cb_2:
  50. s += "orangens";
  51. break;
  52. case R.id.cb_3:
  53. s += "banana";
  54. break;
  55. }
  56. Toast.makeText(CheckBoxActivity.this, s, Toast.LENGTH_SHORT).show();
  57.  
  58. }
  59. }

  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. Awesome Gatsby blog websites

    Awesome Gatsby blog websites very simple very clean i18n dark mode (css var) demos https://overreact ...

  2. Flutter 1.17.x

    Flutter 1.17.x Flutter (Channel stable, v1.17.3, on Mac OS X 10.15.5 19F101, locale en-CN) https://f ...

  3. H.265 & H.264

    H.265 & H.264 HEVC (H.265) vs. AVC (H.264) https://en.wikipedia.org/wiki/High_Efficiency_Video_C ...

  4. IndexedDB All In One

    IndexedDB All In One https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API https://develope ...

  5. API protocols All In One

    API protocols All In One SOAP vs. REST vs. JSON-RPC vs. gRPC vs. GraphQL vs. Thrift https://www.mert ...

  6. VAST上线后,如何提升NGK算力生态的收益和流动性?

    自比特币诞生以来,"挖矿"一词就成功地步入了大众的视野,也成为了加密货币领域最重要的组成部分之一.无论是早前基于比特币和以太坊为主的算力挖矿,还是逐步进入大众视野的质押挖矿,亦或是 ...

  7. 「NGK每日快讯」2021.1.8日NGK第66期官方快讯!

  8. 从微信小程序到鸿蒙js开发【06】——swiper&animator&marquee

    目录: 1.swiper轮播图 2.image-animator幻灯片 3.marquee跑马灯 4.nginx动静分离 1.swiper轮播图 微信小程序的swiper组件中只能放置swiper-i ...

  9. 通过setMouseTracking实现用鼠标拖动控件

    1 import sys 2 from PyQt5.Qt import * 3 4 class Mwindow(QWidget): 5 leftclick = False 6 7 def __init ...

  10. 类关系与uml图示表示

    1. 关联(Association).聚合(Aggregation).组合(Composition)区别 association: 两者之间存在某种关联即可,很弱的关系,如student and co ...