0

我正在使用一个弹出窗口来显示一些信息,并有一个允许更改该信息的编辑按钮。我正在加载所有文本视图、按钮和编辑文本字段,并根据需要隐藏/显示它们。edittext 字段不允许我编辑它们。我已经尝试了以下关于将可聚焦设置为 true 的建议,但这不起作用。还有其他建议吗?

试过这个:弹出窗口上的EditText

编辑:下面是我的代码的一部分。我刚刚包含了用于初始化编辑文本和显示弹出内容的部分,因为其他一切都在工作,而不是编辑文本。我正在使用表格布局,当用户单击一行时,会显示弹出窗口。请记住,我对 Java 和 Android 还是很陌生!

编辑#2:选择edittext时软键盘未显示,但现在如果我关闭弹出窗口然后再次调用它,它将显示。然后我尝试强制显示软键盘,它显示在弹出窗口后面(另一个问题)。我能够选择数字 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

我已经实施了一个解决方案,尽管它可能不是最好的解决方案。我在类初始化时设置了一个布尔字段,用于检查是否曾调用过弹出窗口。如果它还没有被调用,那么它将立即关闭弹出窗口并重新打开它,因为我的问题在于弹出窗口初始化。

    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 回答
2

试试这个,

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

为我工作。

于 2013-03-25T12:21:01.893 回答
1

为此,请使用以下链接的代码,它可能会对您有所帮助。

带有 Edittext 的弹出窗口

于 2012-06-12T05:07:05.107 回答
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 回答