Android中EditText隐藏/自动弹出输入法的问题

有些时候我们的应用需要在EditText聚焦时自动弹出输入法,或者隐藏输入法,关于输入法弹出,一般不会有什么问题。但是,有一些情况输入法是没发自动弹出的,比如弹出的对话框里有edittext,介绍一些常用的用法。

一,配置AndroidManifest文件

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

 <activity
    android:name="com.oair.oair_client.LoginActivity"
    android:label="@string/title_activity_login"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"
    android:configChanges="keyboardHidden|orientation"
    android:windowSoftInputMode="adjustResize"/>

三,设置activity启动的时候输入法默认不开启

activity启动的时候,editext不聚焦,输入法是不会弹出的,输入的时候点击就会弹出输入法。
也可以在onCreate方法中,设置:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

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

弹出的对话框里有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);
    }

四,输入法相关方法

/**
 * 显示键盘
 * @param context
 * @param view
 */
public static void showInputMethod(Context context, View view) {
        InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        im.showSoftInput(view, 0);
}
 //隐藏虚拟键盘
 public static void HideKeyboard(View v){
          InputMethodManager imm = ( InputMethodManager) v.getContext( ).getSystemService(Context.INPUT_METHOD_SERVICE);     
        if (imm.isActive()) {     
            imm.hideSoftInputFromWindow( v.getApplicationWindowToken() , 0 );       
        }    
}

总结

应用起来比较简单,不再赘述。也可以配置EditText,设置是否获得焦点,清除焦点:edit.clearFocus();
EditText不弹出软件键盘:
edit.setInputType(InputType.TYPE_NULL);
activity默认弹出输入法:
android:windowSoftInputMode="stateVisible|adjustPan"
欢迎交流,杜乾,Dusan,Q 291902259。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值