使用EditText在不同场景下调用软键盘的总结


原文地址: 使用EditText在不同场景下调用软键盘的总结


这几天在做自动弹出与隐藏软键盘,EditText在不同的使用环境下调用的方法是不一样的,找不到通用万能的方法,网上写的那些方法也只能作参考,不通用;这里总结一下我的心得,写出来分享给大家,希望对大家有帮助。

1.普通Activity中调用软键盘(下面两种方法都可以用):

方法一:

WindowManager.LayoutParams params = act.getWindow().getAttributes();

            // 隐藏软键盘
        act.getWindow().setSoftInputMode(
                    WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
            params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
    //显示软键盘
        act.getWindow().setSoftInputMode(
                    WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
            params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;

方法二:

//显示软键盘

mReasonEt.requestFocus();
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);  
    imm.showSoftInput(mReasonEt, 0);  

//隐藏软键盘

mReasonEt.requestFocus();
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);  
    imm.hideSoftInputFromInputMethod(mReasonEt.getWindowToken(), 0);

2.TabActivity中嵌套的子Activity中调用软键盘:

//显示软键盘

mReasonEt.requestFocus();
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);  
    imm.showSoftInput(mReasonEt, 0);  

//隐藏软键盘

mReasonEt.requestFocus();
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);  
     imm.hideSoftInputFromInputMethod(mReasonEt.getWindowToken(), 0);

在TabActivity中调用软键盘,默认会把底部Tab菜单推上去,导致界面显示和操作不方便,可以设置Activity的属性,让键盘直接覆盖底部tab菜单;如下:

androidMainfest.xml文件中在此Activity中写入 android:windowSoftInputMode="adjustPan"

3.自定义Dialog中的EditText调用软键盘:

//显示软键盘

myDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

//显示键盘(这个方法针对三星9100使用)
        warningDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);


//隐藏软键盘

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

 // 隐藏软键盘(这个方法针对三星9100使用)
 WindowManager.LayoutParams params = getWindow().getAttributes();
 getWindow().setSoftInputMode(
 WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
 params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;


4.捕获屏幕点击事件,隐藏输入法

 getWindow().getDecorView().setOnTouchListener(new OnTouchListener(){


@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(v.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
return false;
}
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值