重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Android限制输入框 4 个中文字符(汉字/Emoji)或 12 个英文字符(字母/数字)
站在用户的角度思考问题,与客户深入沟通,找到化德网站设计与化德网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广、域名与空间、网站空间、企业邮箱。业务覆盖化德地区。
昨天产品提出的一个Bug,用户姓名需要添加长度限制,但对中、英文的限制要求又不一致,所以就不能只用字符串的长度去判断了。
不管是中文还是英文字符,在编译的时候,最终都会被计算机转成二进制编码,所以我们的解题思路就是以 Byte 字节为核心,在 UTF-8 编码下,将中英文字符转成 Byte 数组,再计算 Byte 数组所占的空间大小,在输入框的拦截器中进行比较,实现拦截效果。
我们的需求:中英字符比值是1:3,所以我选择了UTF-8编码
查看中英文字符比值,可以在记事本中查看
纯中文:最多输入四个中文字符
英文或数字:最多输入12个英文字符或数字
一、效果图:
二、Code:
/**
* 1、获取main在窗体的可视区域
* 2、获取main在窗体的不可视区域高度
* 3、判断不可视区域高度,之前根据经验值,在有些手机上有点不大准,现改成屏幕整体高度的1/3
* 1、大于屏幕整体高度的1/3:键盘显示 获取Scroll的窗体坐标
* 算出main需要滚动的高度,使scroll显示。
* 2、小于屏幕整体高度的1/3:键盘隐藏
*
* @param main 根布局
* @param scroll 需要显示的最下方View
*/
public static void addLayoutListener(final View main, final View scroll) {
main.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
main.getWindowVisibleDisplayFrame(rect);
int screenHeight = main.getRootView().getHeight();
int mainInvisibleHeight = main.getRootView().getHeight() - rect.bottom;
if (mainInvisibleHeight screenHeight / 4) {
int[] location = new int[2];
scroll.getLocationInWindow(location);
int srollHeight = (location[1] + scroll.getHeight()) - rect.bottom;
main.scrollTo(0, srollHeight);
} else {
main.scrollTo(0, 0);
}
}
});
}
三、调用方式:
在Activity的onCreate()中调用,
仅此记录。
在H5页面设计过程中,Android手机经常遇到数字键盘遮住输入框的问题,该问题无法使用focus事件来进行解决,因为当把数字键盘折叠之后,再次点击输入框时无法触发focus事件。
使用click事件来解决此类问题(click事件触发如下函数):