3

ScrollViewにいくつかのEditTextを保持するポップアップがあります。EditTextをクリックすると、ポップアップではなくバックグラウンドでビューが上にスクロールするため、キーボードがEditTextをブロックします。

何か案は ?

PopupWindow popUp = new PopupWindow(this);
popUp.update(0, 0, display.getWidth(), display.getHeight());
popUp.setFocusable(true);

LinearLayout llh = new LinearLayout(this)
llh.setOrientation(LinearLayout.HORIZONTAL);
ScrollView sv = new ScrollView(this);

EditText e1,e2,e3...
llh.addView(e1);    
llh.addView(e2);    
llh.addView(e3);
...
sv.addView(llh);
popUp.setContentView(llh);
popUp.showAtLocation(llh, Gravity.BOTTOM, 0, 0);

これは、ScrollViewも保持するビューから「起動」されます。

これに対する回避策があれば、それは素晴らしいことです。

4

1 に答える 1

1

私はあなたと同じ問題に直面しました、そしてそれを解決するために、私はカスタムDialogとカスタムテーマを作成しました(R.style.ThemeDialogCustom次の例で)。また、を設定dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)dialog.setCanceledOnTouchOutside(true);、カスタムレイアウトを設定しsetContentViewます。このようなもの:

Dialog dialog = new Dialog(activityContext, R.style.ThemeDialogCustom);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCanceledOnTouchOutside(true); 
dialog.setContentView(R.layout.custom_dialog_layout);

つまり、上記のコードは、の動作を模倣しようとしPopupWindowます。

編集明確にするために、ダイアログのカスタムレイアウトで定義されたビューにアクセスする必要がある場合は、次のようにアクセスできます。

EditText e1 = (EditText) dialog.findViewById(R.id.e1);

お役に立てば幸いです。

于 2012-07-09T20:57:03.433 に答える