popwindow 焦点问题,物理返回键截获,软键盘监听问题
来源:互联网 发布:windows安全模式进不了 编辑:程序博客网 时间:2024/05/21 12:44
首先是setFocusable这个方法,获取焦点;如果不获取焦点,那么popwindow中的控件都没有办法获取焦点和事件响应问题。
如果获取焦点,那么popwindow就会拦截屏幕上的点击触摸事件以及物理键等。那么只有当popwindow消失,那么popwindow下面的页面才会响应事件。
当然也可以做到popwindow获取事件响应也可以让popwindow以外的区域也可以获取,那就是设置setBackgroundDrawable(new BitmapDrawable())。但是这样会造就只要触摸到popwindow以外区域popwindow就会消失。说白了setBackgroundDrawable(new BitmapDrawable())其实似的popwindow消失而是其他页面获取焦点。
设置了setBackgroundDrawable(new BitmapDrawable()),那么强制性的(当焦点在popwindow以外)消失popwindow,那么
this.setOutsideTouchable(false);就会无效,那么popwindow,你想让其在触摸popwindow以外区域不消失,都失效。
总之:setBackgroundDrawable(new BitmapDrawable()) 这个方法会强制性的将popwindow在 事件在popwindow区域以外的时候消失。但是有的时候,setFocusable 无效。如响应物理返回键,所以有的时候必须添加setBackgroundDrawable(new BitmapDrawable()) 来响应物理返回键。
那么setFocusable 让popwindow获取焦点,如何自己处理物理返回键呢?
只能从软键盘的弹出隐藏做监听:
public class SoftInputListener { private static boolean sLastVisiable = true; private SoftInputListenerCallback back; public SoftInputListener(Activity activity , SoftInputListenerCallback callback) { back = callback; addOnSoftKeyBoardVisibleListener(activity); } /**监听软键盘状态 * @param activity * @param */ public void addOnSoftKeyBoardVisibleListener(Activity activity) { final View decorView = activity.getWindow().getDecorView(); decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); decorView.getWindowVisibleDisplayFrame(rect); int displayHight = rect.bottom - rect.top; int hight = decorView.getHeight(); boolean visible = (double) displayHight / hight < 0.8; if(visible != sLastVisiable){ back.onSoftKeyBoardVisible(visible); } sLastVisiable = visible; } }); } public interface SoftInputListenerCallback { abstract void onSoftKeyBoardVisible(boolean visible); }在activity中调用:
new SoftInputListener(this, new SoftInputListener.SoftInputListenerCallback(){ @Override public void onSoftKeyBoardVisible(boolean visible) { if(!visible) { if(CommentCons.mInputPopdw != null && CommentCons.mInputPopdw.isShowing()) { CommentCons.mInputPopdw.dismiss(); } } }});
通过手动关闭软键盘:
public void closeSoftInput(){ Activity activity = (Activity) mContext; if(activity.getWindow().getAttributes().softInputMode == WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) { InputMethodManager inputMethodManager=(InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow( mEditInput.getWindowToken(),0); }}manifest文件 必须添加:
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" > stateAlwaysHidden不可缺少
- popwindow 焦点问题,物理返回键截获,软键盘监听问题
- 关于软键盘弹起时监听返回键的问题
- popwindow焦点问题
- popwindow与editText 软键盘弹出问题
- android 解决软键盘遮挡popwindow问题
- Android 设置系统的返回键 和软键盘获取焦点问题
- Android 设置系统的返回键 和软键盘获取焦点问题
- Popwindow中弹出软键盘后挡住Pop问题
- Android EditText 软键盘和焦点问题
- 外部EditText与PopWindow的焦点问题
- webview中利用onKeyDown监听物理按键返回的问题
- phonegap监听物理返回键
- phonegap监听物理返回键
- 解决popwindow 返回按键 响应问题!
- 关于EditText获取焦点,隐藏软键盘的问题
- 软键盘与控件的焦点冲突问题
- EditText焦点问题:进入app之后,就弹出软键盘
- android软键盘的隐藏以及Edittext的焦点问题
- Nginx服务器的缓存机制
- iOS YYModel使用方法
- 使创建的普通用户具有root权限
- Linux Centos7.3 开机启动 Nginx服务
- CF 实力二分
- popwindow 焦点问题,物理返回键截获,软键盘监听问题
- 河工大校赛总结+补题(未完待续)
- 用java搭建自己的http服务器
- Repeated Substring Pattern问题及解法
- 优云亮相GOPS2017全球运维大会 “黑科技”获全场最高关注
- Docx4j替换word文档的页眉
- 机器学习模型LaTeX公式版:支持向量机
- android 处理软键盘弹出时的一种方法
- 位运算的奇淫技巧