”Dialog中包含EditText“时,控制输入法的”隐藏/自动弹出“操作

来源:互联网 发布:centos 防止暴力破解 编辑:程序博客网 时间:2024/06/09 16:13

实战情景需求: 需要在EditText聚焦时自动弹出输入法,或者隐藏输入法。

内容描述:

  • 1.输入法弹出,一般没什么问题。但是有没发自动弹出的情况如:弹出的对话框Dialog里有edittext。
    解决方法:

一、配置AndroidManifest文件

在有edittext的activity中,配置android:windowSoftInputMode,输入法自动调节大小。
如登录界面,有两个EditText和按钮,当用户点击输入用户名时,自动弹出输入法,将布局顶上去,adjustResize可以让输入法不遮住edittext输入框。

<activityandroid:name=".activity.SoundRecorder"    android:clearTaskOnLaunch="false"android:configChanges="orientation|screenSize|keyboardHidden"android:launchMode="singleTask"android:windowSoftInputMode="adjustResize"android:screenOrientation="portrait">

二、设置activity启动的时候输入法默认不开启

  • 如果设置成:android:windowSoftInputMode=”stateVisible|adjustPan” ,那么启动后就马上显示输入法。
  • activity启动的时候,editext不聚焦,输入法是不会弹出的,输入的时候点击就会弹出输入法。
    为了不一启动就打开,可以在onCreate方法中,设置:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

三、对话框有EditText,强制显示输入法

弹出的对话框dialog里有edittext,show方法与输入法的现实可能会冲突,没发自动弹出可如下操作:

//显示对话框之后,用handler延时显示输入法,不延时将一闪而过。    dialog_rename.show();        new Handler().postDelayed(new Runnable() {                    @Override                    public void run() {                        showInputMethod();                    }                },100);        }private void showInputMethod() {        //自动弹出键盘        InputMethodManager inputManager=(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);        inputManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);        //强制隐藏Android输入法窗口        // inputManager.hideSoftInputFromWindow(edit.getWindowToken(),0);    }

四,其他相关方法

import android.content.Context;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;//打开或关闭软键盘public class KeyBoardUtils{    /**     * 打卡软键盘     *     * @param mEditText输入框     * @param mContext上下文     */    public static void openKeybord(EditText mEditText, Context mContext) {        InputMethodManager imm = (InputMethodManager) mContext                .getSystemService(Context.INPUT_METHOD_SERVICE);        imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,                InputMethodManager.HIDE_IMPLICIT_ONLY);    }    /**     * 关闭软键盘     *     * @param mEditText输入框     * @param mContext上下文     */    public static void closeKeybord(EditText mEditText, Context mContext) {        InputMethodManager imm = (InputMethodManager) mContext.                getSystemService(Context.INPUT_METHOD_SERVICE);        imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);    }}

总结

过程比较简单。也可以配置EditText,设置是否获得焦点,清除焦点:edit.clearFocus();

  • EditText禁止、不弹出软件键盘:
    edit.setInputType(InputType.TYPE_NULL);。

  • activity一启动默认弹出输入法:
    android:windowSoftInputMode=”stateVisible|adjustPan”

0 0
原创粉丝点击