1

重複の可能性:
PopupWindowがEditTextでシステムコンテキストダイアログをトリガーしない長押し

この質問をする前に、私はすでに数時間かけてさまざまな方法を検索して試しましたが、これは答えられなかったこの質問とまったく同じです。質問を複製するつもりはありませんが、ショックを受けました。この問題は解決されず、SOに記録されません。これは、この要件が非常に一般的であるためです。

この問題は100%再現可能です。EditTextを含むレイアウトでPopupWindowを作成し、EditTextを長押しすると、システム編集ダイアログが表示されません。表示方法が原因でダイアログであることがわかります。それがバグなのか、PopupWindowで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);

何か案は?

4

1 に答える 1

1

PopupWindowの使用をあきらめ、代わりにDialogを使用します。いくつかのテストを行った後、DialogはPopupWindowよりもはるかに優れていることがわかりました。PopupWindowにはかなりの問題があります。

  1. PopupWindowのWebViewは、Androidの一部のバージョンで長押しに応答せず、応答するとクラッシュします。これはWebViewの問題ではなく、PopupWindowの問題です。
  2. PopupWindowのEditTextは、PopupWindowとキーボードが最初に表示されたときに高さを少し縮小し、その後元の高さに拡大します。
  3. PopupWindowのWebViewは、テキスト入力を含むページをロードします。テキスト入力にフォーカスがある場合、BACKキーをインターセプトする方法はありません。
  4. 他の多くの...

今、私はDialogをWebViewのコンテナーとして使用していますが、前述の問題はすべて解消されましたが、解決する必要のある小さな問題がまだ残っています。ICSでは、ダイアログが表示され、HOMEキーを押してアプリに戻ると、ダイアログが非表示になり、ダイアログを元に戻すことができませんDialog.show()。これ以外は、すべて正常に動作しています。そして、私はPopupWindowを二度と使用しないことを誓います、PopupWindowは最悪です!

于 2012-12-15T11:53:11.447 に答える