长按弹出窗口中的EditText不会显示系统编辑对话框



可能重复:
弹出窗口未触发EditText上的系统上下文对话框长按

在我问这个问题之前,我已经花了几个小时搜索和尝试不同的方法,但没有运气,这和这个问题完全一样,没有答案,我不打算重复这个问题,但我很震惊这个问题没有得到解决并记录在SO中,因为这个要求很常见。

这个问题是100%可重复的,只需创建一个布局包含EditText的PopupWindow,并长按EditText,系统编辑对话框就不会出现,因为它的显示方式,我知道它是一个对话框。我不确定是bug还是有一些开关需要打开才能使EditText在弹出窗口中正常工作。

layout/popupwindow.xml:中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff" >
<EditText android:id="@+id/etText" android:layout_width="fill_parent" android:layout_height="wrap_content" />
</LinearLayout>

活动中:

PopupWindow pw = new PopupWindow(getLayoutInflater().inflate(R.layout.popupwindow, null), ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, true);
pw.setFocusable(true);
pw.setBackgroundDrawable(new BitmapDrawable());
pw.showAtLocation(getWindow().getDecorView(), Gravity.CENTER, 0, 0);

有什么想法吗?

我放弃了使用PopupWindow,而是使用Dialog,经过一些测试,我发现Dialog比PopupWindow好得多,PopupWindow有很多问题:

  1. PopupWindow中的WebView在某些版本的Android上不会对长按做出响应,如果响应了,就会崩溃。这不是WebView问题,而是PopupWindow问题
  2. 当PopupWindow和键盘第一次显示时,PopupWindow中的EditText会稍微收缩其高度,然后扩展到其原始高度
  3. PopupWindow中的WebView加载一个包含文本输入的页面,如果文本输入具有焦点,则无法拦截BACK键
  4. 许多其他

现在我使用Dialog作为WebView的容器,所有提到的问题都消失了,只有一个小问题需要解决。在ICS上,当显示对话框时,我按下HOME键,返回应用程序,对话框被隐藏,我无法用Dialog.show()恢复对话框,除了这个对话框,一切都很好。我发誓我再也不会使用弹出窗口了,弹出窗口太糟糕了!

最新更新