EditText在不同场景下调用软键盘

来源:互联网 发布:网络装备交易排行榜 编辑:程序博客网 时间:2024/05/19 06:15

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

方法一:

WindowManager.LayoutParams params = activity.getWindow().getAttributes();// 隐藏软键盘activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;//显示软键盘activity.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;//弹出dialog立马显示键盘(需要让dialog丢失焦点)mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);mDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 
4.捕获屏幕点击事件,隐藏输入法

getWindow().getDecorView().setOnTouchListener(new OnTouchListener(){@Overridepublic 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
原创粉丝点击