控件工具类

/**
 * 控件工具类
 */
public class WidgetUtil {
    
    

    /**
     * 获取编辑框的最大长度,通过反射机制调用隐藏方法
     *
     * @param editText 文本控件
     * @return 长度
     */
    public static int getMaxLength(EditText editText) {
    
    
        int length = 0;
        try {
    
    
            InputFilter[] inputFilters = editText.getFilters();
            for (InputFilter filter : inputFilters) {
    
    
                Class<?> c = filter.getClass();
                if (c.getName().equals("android.text.InputFilter$LengthFilter")) {
    
    
                    Field[] f = c.getDeclaredFields();
                    for (Field field : f) {
    
    
                        if (field.getName().equals("mMax")) {
    
    
                            field.setAccessible(true);
                            length = (Integer) field.get(filter);
                        }
                    }
                }
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        return length;
    }

    /**
     * 关闭所有键盘
     * @param act Activity
     */
    public static void hideAllInputMethod(Activity act) {
    
    
        // 从系统服务中获取输入法管理器
        InputMethodManager imm = (InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm.isActive()) {
    
     // 软键盘如果已经打开则关闭之
            imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }

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

猜你喜欢

转载自blog.csdn.net/m0_48440239/article/details/114189514