posts - 296,comments - 1,views - 2995

一.所花时间

0.6h

二.代码量

30行

三.博客量

1篇

四.了解到的知识点

文本变化监听器

输入法的软键盘往往会遮住页面下半部分,使得“登录”“确认”“下一步”等按钮看不到了,用户若想点击这些按钮还得再点一次返回键才能关闭软键盘。为了方便用户操作,最好在满足特定条件时自动关闭软键盘,比如手机号码输入满11位后自动关闭软键盘,又如密码输入满6位后自动关闭软键盘,等等。达到指定位数便自动关闭键盘的功能,可以再分解为两个独立的功能点,一个是如何关闭软键盘,另一个是如何判断已输入的文字达到指定位数,分别说明如下。
1.如何关闭软键盘
诚然按下返回键就会关闭软键盘,但这是系统自己关闭的,而非开发者在代码中关闭。因为输入法软键盘由系统服务INPUT_METHOD_SERVICE管理,所以关闭软键盘也要由该服务处理

public static void hideOneInputMethod(Activity act, View v) {
 // 从系统服务中获取输入法管理器
InputMethodManager imm = (InputMethodManager) 
act.getSystemService(Context.INPUT_METHOD_SERVICE);
 // 关闭屏幕上的输入法软键盘
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
 }

2.如何判断已输入的文字达到指定位数

// 定义一个编辑框监听器,在输入文本达到指定长度时自动隐藏输入法
private class HideTextWatcher implements TextWatcher {
 private EditText mView; // 声明一个编辑框对象
private int mMaxLength; // 声明一个最大长度变量
public HideTextWatcher(EditText v, int maxLength) {
 super();
 mView = v;
 mMaxLength = maxLength;
 }
 // 在编辑框的输入文本变化前触发
public void beforeTextChanged(CharSequence s, int start, int count, int 
after) {}
 {}
 // 在编辑框的输入文本变化时触发
public void onTextChanged(CharSequence s, int start, int before, int count) 
// 在编辑框的输入文本变化后触发
public void afterTextChanged(Editable s) {
 String str = s.toString(); // 获得已输入的文本字符串
// 输入文本达到11位(如手机号码),或者达到6位(如登录密码)时关闭输入法
if ((str.length() == 11 && mMaxLength == 11)
 || (str.length() == 6 && mMaxLength == 6)) {
 ViewUtil.hideOneInputMethod(EditHideActivity.this, mView); // 隐藏输入
法软键盘
}
 }
 }

 

posted on   leapss  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2023-05-16 每日打卡-25
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示