Android EditText限制数字的输入范围

简介: Android工具箱中的TextFields中,EditText的inputType定义的N种类型,包括了常用的text,number.. 下面代码添加一个number类型的EditText并设置它的数字输入范围示范。

Android工具箱中的TextFields中,EditText的inputType定义的N种类型,包括了常用的text,number..

image image

下面代码添加一个number类型的EditText并设置它的数字输入范围示范。

image


image

 

设置输入数字范围的代码:

image

如果使用屏蔽的代码,就会出现下面问题:

Cannot refer to a non-final variable et inside an inner class defined in a different method

原因见文章:

http://www.2cto.com/kf/201306/223568.html

主要原因是:

在方法中定义的变量时局部变量,当方法返回时,局部变量(str1,str2)对应的栈就被回收了,当方法内部类去访问局部变量时就会发生错误。当在变量前加上final时,变量就不在是真的变量了,成了常量,这样在编译器进行编译时(即编译阶段)就会用变量的值来代替变量,这样就不会出现变量清除后,再访问变量的错误。

 

下面贴出限定的全部代码:

image

    

  1. private int MIN_MARK = 0;
  2.     private int MAX_MARK = 100;
  3.     //private void setRegion(EditText et)
  4.     private void setRegion( final EditText et)
  5.     {
  6.         et.addTextChangedListener(new TextWatcher() {
  7.             @Override
  8.             public void onTextChanged(CharSequence s, int start, int before, int count) {
  9.                 if (start > 1)
  10.                 {
  11.                     if (MIN_MARK != -1 && MAX_MARK != -1)
  12.                     {
  13.                       int num = Integer.parseInt(s.toString());
  14.                       if (num > MAX_MARK)
  15.                       {
  16.                           s = String.valueOf(MAX_MARK);
  17.                           et.setText(s);
  18.                       }
  19.                       else if(num MIN_MARK)
  20.                           s = String.valueOf(MIN_MARK);
  21.                       return;
  22.                     }
  23.                 }
  24.             }

  25.             @Override
  26.             public void beforeTextChanged(CharSequence s, int start, int count,
  27.                     int after) {
  28.             }

  29.             @Override
  30.             public void afterTextChanged(Editable s)
  31.             {
  32.                 if (s != null && !s.equals(""))
  33.                 {
  34.                     if (MIN_MARK != -1 && MAX_MARK != -1)
  35.                     {
  36.                          int markVal = 0;
  37.                          try
  38.                          {
  39.                              markVal = Integer.parseInt(s.toString());
  40.                          }
  41.                          catch (NumberFormatException e)
  42.                          {
  43.                              markVal = 0;
  44.                          }
  45.                          if (markVal > MAX_MARK)
  46.                          {
  47.                              Toast.makeText(getBaseContext(), "分数不能超过100", Toast.LENGTH_SHORT).show();
  48.                              et.setText(String.valueOf(MAX_MARK));
  49.                          }
  50.                          return;
  51.                     }
  52.                  }
  53.             }
  54.         });
  55.     }

image

参考文献:

http://blog.csdn.net/dahuaishu2010_/article/details/8296687

http://www.linuxidc.com/Linux/2012-12/76204.htm

相关文章
|
Android开发
Android EditText设置inputType之后minLines失效
Android EditText设置inputType之后minLines失效
336 0
|
5月前
|
数据库 Android开发
Android使用EditText+Listview实现搜索效果(使用room模糊查询)
本文介绍如何在Android中使用EditText与ListView实现搜索功能,并结合Room数据库完成模糊查询。主要内容包括:Room的模糊查询语句(使用`||`代替`+`号)、布局美化(如去除ListView分割线和EditText下划线)、EditText回车事件监听,以及查询逻辑代码示例。此外,还提供了相关扩展文章链接,帮助读者深入了解ListView优化、动态搜索及Room基础操作。
335 65
|
XML 监控 Android开发
Android Studio App开发入门之文本输入EditText的讲解及使用(附源码 包括编辑框、焦点变更监听器、文本变化监听器 )
Android Studio App开发入门之文本输入EditText的讲解及使用(附源码 包括编辑框、焦点变更监听器、文本变化监听器 )
745 0
|
5月前
|
Java API Android开发
Android实现EditText的抖动效果
本文介绍Android开发中的**samples**资源,适合初学者学习。文中的动画效果源自samples(如API Demos展示)。通过调用`AnimationUtils.loadAnimation`实现摇晃动画,核心代码包括Java文件调用、shake.xml定义水平位移及cycle_7.xml设置循环次数。欢迎留言交流!
|
XML Java Android开发
14. 【Android教程】文本输入框 EditText
14. 【Android教程】文本输入框 EditText
1321 2
|
Java Android开发 iOS开发
Android TextView 与 EditText 的区别与使用
Android TextView 与 EditText 的区别与使用
336 0
|
XML Android开发 数据格式
Android EditText 获取/失去焦点
项目的需求中,又一个4位数的验证码界面,小弟才疏学浅,只想到了用线性布局里面放四个EditText。 需求需要输入内容后,自动跳到下一个位置聚焦,删除指定位置后,自动跳到上一个位置聚焦,由于聚焦/非聚焦UI展示得都不同,所以每个editText都会频繁的设置焦点变化。 之前因为是调用的系统键盘,所以,editText和键盘绑定后处理起来非常方便,但是,我们需要自定义一个展示在UI上的数字键盘,于是就有些bug。 bug不难,但是有点杂乱,下面是我的一点解决办法,总结一下,以后也记得更清楚!
|
Java Android开发
Android 中设置EditText输入框提示文本hint的字体大小
Android 中设置EditText输入框提示文本hint的字体大小
505 0
|
XML Java Android开发
Android 中通过Java代码动态生成EditText视图,并循环遍历EditText取出遍历的ID和文本框的值
Android 中通过Java代码动态生成EditText视图,并循环遍历EditText取出遍历的ID和文本框的值
208 0
|
Android开发
Android EditText输入框不聚焦,点击跳转
Android EditText输入框不聚焦,点击跳转

热门文章

最新文章

  • 1
    Android实战经验之Kotlin中快速实现MVI架构
    344
  • 2
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    211
  • 3
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    555
  • 4
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    854
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    313
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    232
  • 7
    Android历史版本与APK文件结构
    739
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    246
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    262
  • 10
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    491