【发布时间】:2018-06-01 05:42:33
【问题描述】:
我有一个弹出窗口,里面有一个EditText 输入。弹出窗口的创建如下所示:
Boolean focusable = true;
popupWindow = new PopupWindow(popupView, width, height, focusable);
这一切都很好,EditText 可以输入。当用户单击 android 手机上的后退按钮时,就会出现问题。后退按钮关闭弹出窗口。这不应该发生,因为意图是用户在与弹出窗口进行交互之前无法继续。
现在,我们当然可以将弹出视图的焦点设置为false,以禁止通过后退按钮关闭:
Boolean focusable = false;
popupWindow = new PopupWindow(popupView, width, height, focusable);
现在的问题是EditText 没有获得它需要能够键入的焦点。因此,用户无法与EditText进行交互
知道如何通过弹出视图或EditText 解决这个问题吗?
编辑:
所以我尝试用记录器覆盖主活动上的onBackPress方法,以检查活动中是否调用了监听器:
@Override
public void onBackPressed() {
super.onBackPressed();
Logger.d("isthistriggered");
finish();
}
事实证明,onBackPressed 在弹出窗口处于活动状态时不会被调用。一旦你第二次按下后退按钮,它就会触发监听器。
【问题讨论】:
-
当您在其范围之外单击时,您的弹出窗口是否也会消失?
-
@Umair 弹出窗口覆盖了整个视图,因此没有机会在范围之外点击
-
如果它适合你,请检查我的答案。快速学习者的回答实际上会关闭弹出窗口。
标签: android