您的位置:首页 > 移动开发 > Android开发

Android软键盘自动显示,手动控制显示与隐藏

2016-06-16 00:53 627 查看
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


“`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android软键盘