安卓开发教程26: 焦点变更监听器

205 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情

前面我们学习了 EditText 编辑框控件的基本使用方法,今天来给大家介绍一下它的一个监听器,用于焦点发生变化时触发 setOnFocusChangeListener。

再开始介绍 setOnFocusChangeListener 之前,首先让我们来介绍一个消息模式 Toast.makeText 。

Toast.makeText 基本使用

这个方法可以快速提示信息给用户,它一共有三个参数:

  1. 当前上下文环境,可用this
  2. 提示的内容文本
  3. 显示的时间长短,可用xxxms,也可用默认的 LENGTH_LONG(长)和LENGTH_SHORT(短)

接下来我们来使用一下,在我们的登录页面新增一个按钮,并在点击按钮的时候提示 “已触发点击”。

image.png

setOnFocusChangeListener 使用方法

我们先假设一个需求:在用户输入过程中,我们要对用户名长度限制,比如 6<=用户名长度<=20,我们想要在用户输入完用户名点击密码输入的时候对用户名长度进行检验,如果不在限制范围内,需要用户进行重新输入,并提示信息。

分析需求:

  1. 用户名长度范围 6<=用户名长度<=20;
  2. 密码编辑框获取焦点的时候检测用户名是否合规;
  3. 不合规范提示信息,并重新输入;

实现需求:

  • 给密码编辑框添加 焦点变更监听器 image.png

  • 当密码编辑框获取焦点的时候判断,用户名输入的文本长度

image.png

  • 当用户名输入的文本不合规范的时候,让光标回到用户名编辑框,并弹出提示信息

image.png

效果:

image.png

注意:编辑框被点击第一次触发焦点变化事件,被点击第二次触发点击事件。

所以这个地方用焦点变更事件而不用点击事件

当然我们也可以在用户点击登录按钮的时候再做判断,但是如果遇到长表单的情况下,如果用户最后点击按钮再进行验证会提示过多错误信息,从而导致用户提体验很不好,所以我们可以在编辑框的焦点发生变化时候做一些相应的提示,以优化用户体验。