• Android输入控件EditText和软键盘监听


    1. 跳转到新的页面自动软键盘显示情况:

    在配置清单文件AndroidManifest.xml文件,对Activity的windowSoftInputMode属性进行设置。

    1. stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
    2. stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
    3. stateHidden:用户选择activity时,软键盘总是被隐藏
    4. stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
    5. stateVisible:软键盘通常是可见的
    6. stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
    7. adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
    8. adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
    9. adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

    一般情况下,软键盘的弹出都需要依托EditText获取焦点。根据输入控件可以控制软键盘的弹出和收缩。

    public static void showSoftInput(final View view) {
        view.postDelayed(() -> {
            view.setFocusable(true);
            view.setFocusableInTouchMode(true);
            view.requestFocus();
            InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            if(imm != null) imm.showSoftInput(view, 0);
        }, 200);
    }
    
    public static boolean hideSoftInput(View view) {
        InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        return imm != null && imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }

    2. 键盘上的搜索,回车,确定,GO之类的设置。在EditText类型设置imeOptions属性:

    <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:imeOptions="actionDone|actionGo|actionNext|actionPrevious|actionNone|actionSearch|actionSend"/>

    或在代码中设置:

    editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH);

    3. 判断是否点击了软键盘的回车,搜索之类的按钮,可以添加为输入控件添加TextView.OnEditorActionListener监听,判断点击IME_ACTION类型,返回false则是默认系统处理,返回true则自行处理。

    editText.setOnEditorActionListener((v, actionId, event) -> {
        if (actionId == EditorInfo.IME_ACTION_DONE){
            //TODO
            return true;
        }
        return false;
    });
  • 相关阅读:
    写在最顶部
    新一轮的战斗。
    Codeforces Round #180
    git学习笔记
    感悟、方向、计划
    .NET (c#)序列化和反序列化
    类的序列化发送和接受
    Log4Net: TextBoxBaseAppender
    任何成功不能只靠自己一个人
    技术问题,总是在短期被高估,在长期被低估
  • 原文地址:https://www.cnblogs.com/denluoyia/p/9089024.html
Copyright © 2020-2023  润新知