无法在不关闭和回忆它的情况下在弹出窗口中编辑edittext

时间:2012-06-12 02:52:31

标签: android android-edittext popupwindow

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

试过这个:EditText On A Popup Window

编辑:以下是我的代码的一部分。我刚刚包含了用于初始化edittext并显示弹出内容的部分,因为其他一切都在工作,而不是edittext。我正在使用tablelayout,当用户单击一行时,将显示弹出窗口。请记住,我仍然是Java和Android的新手!

编辑#2:当选择edittext时,软键盘没有显示,但现在它将显示我是否解除弹出一次然后再次调用它。然后我尝试强制显示软键盘,它显示弹出窗口(另一个问题)。我能够选择数字1,因为它几乎没有显示在弹出窗口后面,但它似乎也没有工作。修复方法与此相同:关闭弹出窗口并调用它。 所以我剩下的问题是能够输入edittext而不必一次关闭弹出窗口并回想起来。因此,我正在改变这个问题的标题。

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 个答案:

答案 0 :(得分: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);
    }

不是最好的解决方案,但它确实有效。

答案 1 :(得分:2)

试试这个,

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

适合我。

答案 2 :(得分:1)

使用以下链接的代码,它可能对您有帮助。

Popup With Edittext

答案 3 :(得分:1)

每当您创建PopupWindow时,您必须将true放在focusable中:

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

  final PopupWindow popupWindow = new PopupWindow(popupView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,true); 
祝你好运