弹出窗口上的EditText

时间:2010-11-09 13:27:28

标签: java android android-edittext popupwindow

我正在使用Java在Android 2.2上开发。 我在PopupWindow上放了一个editText,它不起作用。 它就像一个禁用的编辑文本,单击编辑文本将不会显示软键盘。 如何在popupWindow上添加编辑文本?

5 个答案:

答案 0 :(得分:42)

试试吧:

AlertDialog.Builder alert = new AlertDialog.Builder(this);

alert.setTitle("Title");
alert.setMessage("Message");

// Set an EditText view to get user input 
final EditText input = new EditText(this);
alert.setView(input);

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {

  // Do something with value!
  }
});

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog, int whichButton) {
    // Canceled.
  }
});

alert.show();

答案 1 :(得分:17)

我已经解决了这样的问题:我放了popupWindow.setFocusable(true);,现在它正在运行。看起来弹出窗口上的编辑文本没有焦点,因为弹出窗口没有焦点。

答案 2 :(得分:0)

EditText肯定将android:editable属性设置为true吗?如果它是假的,它将在你描述时被禁用。

答案 3 :(得分:0)

popWindow.setFocusable(true);
popWindow.update();

它会起作用。

答案 4 :(得分:0)

从任何侦听器

调用此代码
private void popUpEditText() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Comments");

        final EditText input = new EditText(this);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT);
        input.setLayoutParams(lp);
        builder.setView(input);

        // Set up the buttons
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

             // do something here on OK 

            }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        builder.show();

    }