EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听
Posted 牛皮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听相关的知识,希望对你有一定的参考价值。
软键盘显示和隐藏的监听:
注: mReplayRelativeLayout是EditText的父布局
//监听软键盘是否显示或隐藏 mReplayRelativeLayout.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); mReplayRelativeLayout.getWindowVisibleDisplayFrame(r); int screenHeight = mReplayRelativeLayout.getRootView() .getHeight(); int heightDifference = screenHeight - (r.bottom); if (heightDifference > 200) { //软键盘显示 // changeKeyboardHeight(heightDifference); } else { //软键盘隐藏 } } });
点击一个控件使EditText获取焦点并弹出软键盘:
在该控件的点击事件中写以下代码:
mEditText.setFocusable(true); mEditText.setFocusableInTouchMode(true); mEditText.requestFocus(); mEditText.findFocus(); InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mEditText, InputMethodManager.SHOW_FORCED);// 显示输入法
EditText的隐藏方法:
注:该方法其实是如果软键盘隐藏的状态这打开软键盘,反之着相反。
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
EditText让其在刚进页面的时候不被选中(不处于焦点状态):
解决办法:
在EditText的父布局的xml文件中把焦点占据,写一下代码:
android:focusable="true"
android:focusableInTouchMode="true"
注:点击EditText后使其获取焦点并弹出软件盘,推荐使用setOnTouchListener监听:
mReplayEditText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { mReplayEditText.setFocusable(true); mReplayEditText.setFocusableInTouchMode(true); return false; } });
以上是关于EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听的主要内容,如果未能解决你的问题,请参考以下文章
Android进入一个新页面,EditText失去焦点并禁止弹出键盘
Android实战开发篇 点击EditText以外区域,隐藏键盘,失去焦点