android EditText禁止键盘输入

Laughing
2021-01-09 / 1 评论 / 1,440 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年03月18日,已超过305天没有更新,若内容或图片失效,请留言反馈。

最近在做项目,遇到一个需求,有一个文本框(EditText)存储重量信息,重量信息来源于蓝牙电子秤,所以禁止用户手工输入。

如下图,回收物重量,能正常点击并出现光标,但是不会弹出软键盘

实现

定义一个常量类

/**
 * Description: 反射方法名
 *
 * @author : laughing
 * DateTime: 2021-01-07 13:11
 */
public class ReflectMethodConstants {

    public static String SET_SHOW_SOFT_INPUT_ON_FOCUS = "setShowSoftInputOnFocus";

    public static String SET_SOFT_INPUT_SHOWN_ON_FOCUS = "setSoftInputShownOnFocus";
}

反射设置控件

 //禁止弹出软键盘
            Class<EditText> cls = EditText.class;
            Method method;
            try {
                method = cls.getMethod(ReflectMethodConstants.SET_SHOW_SOFT_INPUT_ON_FOCUS, boolean.class);
                method.setAccessible(true);
                method.invoke(viewHolder.textViewWeight, false);
            } catch (Exception ignored) {
            }
            try {
                method = cls.getMethod(ReflectMethodConstants.SET_SOFT_INPUT_SHOWN_ON_FOCUS, boolean.class);
                method.setAccessible(true);
                method.invoke(viewHolder.textViewWeight, false);
            } catch (Exception ignored) {
            }
            //禁止键盘输入
            viewHolder.textViewWeight.setFilters(new InputFilter[]{
                    (source, start, end, dest, dStart, dEnd) -> {
                        if (source.length() > 1) {
                            return source;
                        }
                        return "";
                    }
            });
3

评论 (1)

取消
  1. 头像
    青云
    Windows 10 · Google Chrome

    可以使用

    回复
  2. 头像
    吴蛋蛋
    Windows 7 · Google Chrome

    感谢分享

    回复