Android软键盘自动显示,手动控制显示与隐藏
http://blog.csdn.net/ccpat/article/details/46717573
1软键盘自动弹出
//设置软键盘自动弹出
etTitle.setFocusable(true);
etTitle.setFocusableInTouchMode(true);
etTitle.requestFocus();
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
InputMethodManager methodManager = (InputMethodManager) etTitle.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); methodManager.showSoftInput(etTitle, 0);
}
},
998);
2软键盘自动调整布局而不覆盖布局
就一句话menifest文件activity属性添加(记得根布局用相对布局)
<activity
android:name=".activity.PostActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"/>
3手动控制软键盘显示与隐藏
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
(1)显示软键盘,showSoftInput的第一个参数要是光标所在的edittext
if (inTitle) {
imm.showSoftInput(etTitle,InputMethodManager.HIDE_IMPLICIT_ONLY);//显示软键盘
} else if (inText) {
imm.showSoftInput(mEditEmojicon,InputMethodManager.HIDE_IMPLICIT_ONLY);//显示软键盘
}
(2)隐藏软键盘,第一个参数可以用任何一个view
```
4获取软键盘高度
``` rlPost.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
/**
* the result is pixels
*/
@Override
public void onGlobalLayout() {
Rect r = new Rect();
rlPost.getWindowVisibleDisplayFrame(r);
int screenHeight=rlPost.getRootView().getHeight();
int heightDifference = screenHeight - (r.bottom - r.top);
Log.e("Keyboard Size", "Size: " + heightDifference);
}
});
<div class="se-preview-section-delimiter"></div>
5软键盘焦点问题
setOnFocusChangeListener与setOnClickListener结合使用
第一次点击edittext是走setOnFocusChangeListener
再点击一下edittext是走setOnClickListener
补充:手动控制软键盘弹出如果弹不出来加延时搞定
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
InputMethodManager m = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 300);
补充//imm.showSoftInput(etComment, InputMethodManager.HIDE_IMPLICIT_ONLY);//显示软键盘
//imm.showSoftInput(etComment, InputMethodManager.SHOW_FORCED);
5软键盘焦点问题
setOnFocusChangeListener与setOnClickListener结合使用
第一次点击edittext是走setOnFocusChangeListener
再点击一下edittext是走setOnClickListener
补充:手动控制软键盘弹出如果弹不出来加延时搞定
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
InputMethodManager m = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 300);
补充` //imm.showSoftInput(etComment, InputMethodManager.HIDE_IMPLICIT_ONLY);//显示软键盘
//imm.showSoftInput(etComment, InputMethodManager.SHOW_FORCED);`
设置键盘覆盖popupwindow
popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//设置键盘覆盖popupwindow
“`