怎么感觉最近补充的都是监听器的内容,今天学长提了一个新的监听器,看起来很牛批(因为很长)

// 添加文本更改的监听器, TextWatcher是监听器的回调接口
text.addTextChangedListener(new TextWatcher() {
  /**
  * 更改文字之前
  * @param s 编辑框被更改之前的内容
  */
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  // System.out.println("1:" + s);
  }

  /**
  * 文字更改后
  * @param s 更改后的文字
  */
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
  try {
      Integer integer = Integer.parseInt(s.toString());
      if (integer < 1) {
      text.setText("1");
      }
      if (integer > 999) {
      text.setText("999");
      }
    } catch (NumberFormatException e) {
      text.setText("1");
      }
    }

  @Override
  public void afterTextChanged(Editable s) {
    System.out.println("3:" + s);
    }
  });
}

其实刚开始他一生成我看蒙了,一眨眼就这么多。

其实生成onTextChanged这个监听器分成三部分,操作前,操作中,操作后。

这个例题的意思就是创建了一个输入数字的框,用监听器在第二步,注意是第二步检测它输入的东西,如果是1-999内的就原样输出,不然就text.setText("1");或者text.setText("999");就是把它输入的直接改成这么多。

就这样的布局:

 模拟器实现:反正就是输入的不在这个范围内,你一小于或者超过就给你归1或999

running:(onTextChanged监听器实现的效果,三部分1,2,3,可以看出,第一步还是我输入的1111,第二步因为有约束才变的999,第三步,都懂哈,根据前面的来的)

 

好,复选框来了:

  其实和html 的表单里的复选框思想大同小异。

  因为是复选框,直接在布局里拖;

 两个按钮,待会介绍,先介绍复选框的一些属性

textColor,复选框后面的文字的颜色,

buttonTint是复选框那个框的颜色

checked这个属性,学过HTML都知道,就是默认会勾选哪个,属性值就是布尔值。

状态按钮的作用是:提示当前的复选框是什么状态,选了还是没选,用Toast提示。

绑定按钮:就相当于一个灯泡和一个开关绑起来,按按钮,调节复选框。

为啥会实现这样的功能,活动代码揭晓:

final CheckBox c0=findViewById(R.id.c0);
findViewById(R.id.get).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean check=c0.isChecked();
if(check)
Toast.makeText(Main3Activity.this, "选了", Toast.LENGTH_SHORT).show();
else
Toast.makeText(Main3Activity.this, "取消", Toast.LENGTH_SHORT).show();
}
});
findViewById(R.id.b).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Boolean check=c0.isChecked();
// if(check==true){
// c0.setChecked(false);
// }
// else c0.setChecked(true);
c0.setChecked(!c0.isChecked());
}
});
c0.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { CheckBox c2=(CheckBox)buttonView;
String s=c2.getText().toString();
Log.d("Main3Activity",s);
c2.setText(s);
}
});
setOnCheckedChangeListener也是个监听器,我感觉吧,这个监听器是跟按钮的绑定有关的,一般是获取按钮当前的信息;
解析下代码,刚开始就直接拿那个状态按钮做了个监听器c0.isChecked()就是判断是否选中
第二个监听器是那个绑定按钮,同样是先判断选中没,没选择就setchecked一下,就给它选择了,为了绑定起来,我们得给它同步。
下面那句话就是前面注释的精简版,意思就是如果没选中点一下就选,如果选中了点一下就不选。
监听器的作用就是得到按钮的值,给它放到复选框里去,就把它的名字取出来了

 

然后就是单选框:

  有个小技巧:

想运行哪个就给intent-filter标签剪下来放到那个活动里,它就会像主活动一样占用模拟器。

 

就上一段代码吧:

    <RadioGroup
android:id="@+id/r0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:checkedButton="@id/r">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"> </TextView>
<RadioButton
android:id="@+id/r"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="男" /> <RadioButton
android:id="@+id/r1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女" /> <RadioButton
android:id="@+id/r2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="隐藏" /> </RadioGroup>
上头的这是布局:(单选框和复选框的属性大同小异,就是注意下,单选框需要单选框组去包着
 android:checkedButton="@id/r"这句话其实就相当于checked,但是是直接在单选框组选,这样就直接选id就好,其实都一样。

单选框,因为有很多组不同类别的单选框,可能会相互影响所以出现了
RadioButton,
RadioGroup(单选框组,给单选框按钮分堆的)

活动代码贴上:
final RadioGroup r0=findViewById(R.id.r0);

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int but=r0.getCheckedRadioButtonId();
switch (but){
case R.id.r:
Toast.makeText(Main4Activity.this, "男", Toast.LENGTH_SHORT).show();break;
case R.id.r1:
Toast.makeText(Main4Activity.this, "女", Toast.LENGTH_SHORT).show();break;
case R.id.r2:
Toast.makeText(Main4Activity.this, "隐藏", Toast.LENGTH_SHORT).show();break; }
}
});
这就是个简单的监听器,button是我创的一个按钮,在这边是它用的监听器,为的就是监听下单选框的情况,然后提示。
当时学长是用粗暴的方法,直接每个单选框去监听,这边就是用一个单选框组去记录,然后用switch去选,不知道你们会不会奇怪
int but=r0.getCheckedRadioButtonId();
case R.id.r:
整型,为啥case的时候要用按钮的名字呢?
答案就是:按钮的名字自带的就有一种是数字型的。 结束啦,今天的内容。本牛崽忙碌的一天结束啦,看看时间好像没得时间挥霍了,洗洗睡吧。

Android布局——单复选框(今天上课的内容总结下)的更多相关文章

  1. Android之单复选框及Spinner实现二级联动

    一.基础学习 1.图形学真的很神奇啊....查了些资料做出了3D云标签,哈哈...其实直接拿来用的,我们要效仿鲁迅先生的拿来主义,嘿嘿~~3D标签云就是做一个球面,然后再球面上取均匀分布的点,把点坐标 ...

  2. 表单复选框input[type="checkbox"]

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  3. javascript入门 之 ztree (九 单/复选框问题)

    <!DOCTYPE html> <HTML> <HEAD> <meta http-equiv="content-type" content ...

  4. 8个非常个性化的CSS3单/复选框

    单选框和复选框在网页表单中应用十分广泛,但是浏览器默认自带的单选框和复选框样式不仅不统一,而且大多都比较简单丑陋.本文给大家介绍了一些基于CSS3的个性化单选框和复选框,一些选中动画是基于jQuery ...

  5. AngularJS(六):表单-复选框

    本文也同步发表在我的公众号“我的天空” 复选框 复选框只有两个值:true或者false,因此在AngularJS中,一般都是将复选框的ng-model绑定为一个布尔值属性,通过这两个布尔值来决定其勾 ...

  6. python selenium单/复选框操作

    一.单选:radio 1.首先是定位选择框的位置 2.定位id,点击图标就可以了,代码如下(获取url地址方法:把上面源码粘贴到文本保存为.html后缀后用浏览器打开,在浏览器url地址栏复制出地址就 ...

  7. 原创:纯CSS美化单复选框(checkbox、radio)

    最重要的一点,隐藏选择框本身.不多说了,上代码: <!doctype html> <html> <head> <meta charset="utf- ...

  8. SpringMVC 表单复选框处理

    <form action="" method="post"> <c:forEach items="${dblist}" v ...

  9. jquery 判断单/复选框是否被选中

    1 <div> 2 <span>高亮:</span><input type="checkbox" name="light&quo ...

随机推荐

  1. 批量删除当前文件夹下面的.svn文件夹

    for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn 使用方法: 新建text文档,复制上面的文本 ...

  2. Sql Or NoSql,看完这一篇你就懂了(转五月的仓颉)

    前言 你是否在为系统的数据库来一波大流量就几乎打满CPU,日常CPU居高不下烦恼?你是否在各种NoSql间纠结不定,到底该选用那种最好?今天的你就是昨天的我,这也是写这篇文章的初衷. 这篇文章是我好几 ...

  3. JVM 专题十八:垃圾回收(二)垃圾回收相关算法

    1. 标记阶段 1.1 引用计数算法 1.1.1 对象存活判断 在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象.只有被标记为己 ...

  4. java 面向对象(三十八):反射(二) Class类的理解与获取Class的实例

    1.Class类的理解 1.类的加载过程:程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾).接着我们使用java.exe命令对某个字节码文件进行解释运行.相当于将某个 ...

  5. bzoj3442学习小组

    bzoj3442学习小组 题意: 共有n个学生,m个学习小组,每个学生只愿意参加其中的一些学习小组,且一个学生最多参加k个学习小组.每个学生参加学习小组财务处都收一定的手续费,不同的学习小组有不同的手 ...

  6. 【真实分享】学习linux!让我工资翻5倍!从月薪3000到年薪18W!只用了六个月!

    月薪3000到年薪18W,我用了六个月时间.从只会皮毛,到一家公司的运维工程师主力,我的故事蛮神奇的,今天和大家分享一下我自己的经历. 我今年26岁,之前做个体,修过电脑,卖过电脑,做过桌面运维,一直 ...

  7. Linux安装禅道项目管理软件

    1.从官网上面下载禅道的rpm文件 #wget http://dl.cnezsoft.com/zentao/7.1/zentaopms-7.1.stable-1.noarch.rpm 2.用指令安装 ...

  8. python-多任务编程02-进程(processing)

    进程与程序 程序:例如xxx.py这是程序,是一个静态的 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元. multiprocessing模块 multipro ...

  9. Java流程控制(Scanner)

    3.1用户交互Scanner 可以通过Scanner类来获取用户的输入: 语法: Scanner s = new Scanner(System.in); 通过Scanner类的next()与nextL ...

  10. 第三章 Java面向对象(上)

    3.1.概述 概述:面向对象是相对面向过程而言,面向对象和面向过程都是一种思想,面向过程强调的是功能行为,面向对象则是将功能封装进对象,强调具备功能的对象,面向对象是基于面向过程的.面向对象的三大特征 ...