关于android PopupWindow点击EditText后返回键无法关闭。 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于android PopupWindow点击EditText后返回键无法关闭。

2016-03-13 11:44:02 2755 1

大神们,快来看看这个神奇的问题吧!!
我在Activity弹出一个PopupWindow,PopupWindow上有一个EditText,如果我不去触碰它,我点击返回键可以把PopupWindow关闭,但是我一旦点了输入框,弹出软键盘,那这时我再怎么点返回键都没用,都关不了PopupWindow。以下是我的代码:
screenshot

取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 19:02:22

    事件被分发到edittext了,为edittext 设置onKeyListener即可,可以参照一下以下代码。

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.KeyEvent;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnKeyListener;
    import android.view.WindowManager;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.PopupWindow;
    
    public class PopUpWindowTestActivity extends Activity {
    
        private Button btnPopup;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_pop_up_window_test);
    
            btnPopup = (Button) findViewById(R.id.btn_popup);
    
            btnPopup.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    showPopupWindow(v);
                }
            });
    
        }
    
        private MPopupWindow popupWindow = null;
    
        protected void showPopupWindow(View v) {
            if (popupWindow == null)
                popupWindow = new MPopupWindow(this, 500, 300);
            popupWindow.show(v);
        }
    
        class MPopupWindow extends PopupWindow {
    
            private final Activity mContext;
    
            private View contentView;
    
            public MPopupWindow(Activity ctx, int width, int height) {
                super(width, height);
                this.mContext = ctx;
    
                contentView = LayoutInflater.from(mContext).inflate(
                        R.layout.popup_content, null);
                init();
            }
    
            private EditText txtTest;
    
            private void init() {
                txtTest = (EditText) contentView.findViewById(R.id.editText1);
                contentView.setFocusable(true);
                contentView.setFocusableInTouchMode(true);
                this.setFocusable(true);
                this.setOutsideTouchable(true);
                this.setContentView(contentView);
                this.setInputMethodMode(PopupWindow.INPUT_METHOD_FROM_FOCUSABLE);
                this.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
                txtTest.setOnKeyListener(new OnKeyListener() {
    
                    @Override
                    public boolean onKey(View v, int keyCode, KeyEvent event) {
                        // TODO Auto-generated method stub
                        if (keyCode == KeyEvent.KEYCODE_BACK) {
                            dismiss();
                            return true;
                        }
                        return false;
                    }
                });
            }
    
    
    
            public void show(View parent) {
                this.setBackgroundAplha(0.4f);
                this.showAtLocation(parent, Gravity.CENTER, 0, 0);
            }
    
            @Override
            public void dismiss() {
                setBackgroundAplha(1.0f);
                super.dismiss();
            }
    
            private void setBackgroundAplha(float alpha) {
                WindowManager.LayoutParams lp = mContext.getWindow()
                        .getAttributes();
                lp.alpha = alpha;
                mContext.getWindow().setAttributes(lp);
            }
    
        }
    
    }
    0 0
相关问答

8

回答

短视频SDK如何做到视频原始比例裁剪?

樰篱 2017-09-13 17:35:01 39446浏览量 回答数 8

323

回答

云伴侣数据导入问题汇总(Android系统)

os_admin 2011-07-26 17:52:15 63118浏览量 回答数 323

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147208浏览量 回答数 22

15

回答

OSS学院:为什么我的图片会被下载?怎么在线播放影音?

leehon 2013-09-13 16:40:00 35256浏览量 回答数 15

1

回答

2020年了,跨平台开发框架现在怎样了?

问问小秘 2020-04-15 13:23:24 35174浏览量 回答数 1

26

回答

安卓与iOS百问,开发者系统指南

yq传送门 2017-05-31 17:16:00 33476浏览量 回答数 26

25

回答

数据库百问,教你快速上手数据库

yq传送门 2017-06-13 08:01:34 38061浏览量 回答数 25

8

回答

mail.aliyun.com邮箱android手机客户端设置方法

jack_yang 2013-04-24 09:01:34 122519浏览量 回答数 8

3

回答

JAVA web 【精品问答合集】

我是管理员 2018-07-13 16:02:35 28015浏览量 回答数 3

46

回答

H5技术百问——不懂H5你就OUT啦

yq传送门 2017-09-09 11:03:04 47406浏览量 回答数 46
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载