3

我有一个 Popup,它在 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 的 View 中“启动”的。

如果有解决方法,那就太好了。

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);

换句话说,上面这段代码试图模仿 a 的行为PopupWindow

编辑为澄清起见,如果您需要访问在对话框的自定义布局中定义的视图,您可以像这样访问它:

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

希望有帮助。

于 2012-07-09T20:57:03.433 回答