0

ポップアップウィンドウを使用していくつかの情報を表示し、その情報を変更できる編集ボタンがあります。すべてのテキストビュー、ボタン、編集テキストフィールドを読み込み、必要に応じて非表示/表示しています。edittextフィールドでは、編集できません。フォーカス可能をtrueに設定することについて、以下の提案を試しましたが、うまくいきません。他に何か提案はありますか?

これを試しました:ポップアップウィンドウのEditText

編集:以下は私のコードの一部です。エディットテキストだけでなく、他のすべてが機能しているので、エディットテキストを初期化してポップアップコンテンツを表示するためのパーツを含めました。テーブルレイアウトを使用していますが、ユーザーが行をクリックすると、ポップアップウィンドウが表示されます。私はまだJavaとAndroidにかなり慣れていないことを覚えておいてください!

編集#2:エディットテキストが選択されたときにソフトキーボードが表示されていませんでしたが、ポップアップを一度閉じてからもう一度呼び出すと表示されるようになりました。次に、ソフトキーボードを強制的に表示しようとしましたが、ポップアップの後ろに表示されました(別の問題)。ポップアップウィンドウの後ろにかろうじて表示されていたので、番号1を選択できましたが、どちらも機能していないようです。修正はここでも同じでした。ポップアップウィンドウを閉じて、呼び出してください。 したがって、私の残りの問題は、ポップアップを一度閉じて呼び出すことなく、エディットテキストに入力できることです。 そのため、この質問のタイトルを変更します。

row1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

    final EditText pwETBrand = (EditText) vPopUp.findViewById(R.id.et_editbrand);

    if (!infoClick) {
        infoClick = true;

        // Popup elements initialized earlier
        pwInfo.showAtLocation(llInfo, Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
        pwInfo.update(0, 0, llMain.getWidth()-50, llMain.getHeight()-100);
        pwInfo.setFocusable(true);

...。

        // Hide some elements initially until "EDIT" button is pressed
        pwETBrand.setVisibility(View.INVISIBLE);

...。

        // When EDIT button is pressed, hide default elements, and show edit elements
        pwEdit.setOnClickListener(new OnClickListener() {
            public void onClick(View v2) {
                pwETBrand.setVisivility(View.VISIBLE);
                // Other element settings go here
                pwInfo.setFocusable(true);
            }
        )};

...。

    }
}
4

4 に答える 4

2

これを試して、

final PopupWindow popupWindow = new PopupWindow(popupView,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,true);

私のために働きます。

于 2013-03-25T12:21:01.893 に答える
2

最善の解決策ではないかもしれませんが、解決策を実装しました。クラスの初期化時に、popupwindow が呼び出されたかどうかをチェックするブール フィールドを設定しました。まだ呼び出されていない場合は、ポップアップウィンドウの初期化に問題があるため、すぐにポップアップウィンドウを閉じて再度開きます。

    pwInfo.showAtLocation(llInfo, Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
    pwInfo.update(0, 0, llMain.getWidth()-50, llMain.getHeight()-100);
    pwInfo.setFocusable(true);

    if (pwFirst) {
        pwFirst = false;
        pwInfo.dismiss();
        pwInfo.showAtLocation(llInfo, Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
        pwInfo.update(0, 0, llMain.getWidth()-50, llMain.getHeight()-100);
        pwInfo.setFocusable(true);
    }

最善の解決策ではありませんが、機能します。

于 2012-06-12T18:12:29.260 に答える
1

を作成するときはいつでも、次のように入力する必要PopupWindowがあります:truefocusable

 PopupWindow(View contentView, int width, int height, boolean focusable) 

  final PopupWindow popupWindow = new PopupWindow(popupView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,true); 

幸運を

于 2013-02-01T11:16:20.747 に答える
1

そのためにリンクの下のコードを使用すると、役立つ場合があります。

Edittext を含むポップアップ

于 2012-06-12T05:07:05.107 に答える