安卓 AlertDialog 多行文本编辑框

7

如何在Android的AlertDialog中创建多行EditText?我已经设置了setLines,它显示了一个有多行的更大的EditText。但是当我输入时,它并没有换行,仍然在同一行上输入。这是我的代码:

Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Comment");

        final EditText input = new EditText(this);

        final String item_value = ItemList.get(position).get("comment");

        input.setText(item_value);
        input.setInputType(InputType.TYPE_CLASS_TEXT);
        input.setLines(5);
        input.setMaxLines(5);
        input.setGravity(Gravity.LEFT | Gravity.TOP);
        builder.setView(input);

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


            }
        });

        builder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();

我的对话框长这样。enter image description here请问我该如何解决这个问题?谢谢。
7个回答

8

尝试使用以下代码来处理EditText:

input.setSingleLine(false);  //add this
input.setLines(4);
input.setMaxLines(5);
input.setGravity(Gravity.LEFT | Gravity.TOP);
input.setHorizontalScrollBarEnabled(false); //this

2
最好使用 Gravity.START - Gibolt

6

使用输入类型input.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE)input.setSingleLine(false)。因此,您的代码将如下所示-

Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Comment");

        final EditText input = new EditText(this);

        final String item_value = ItemList.get(position).get("comment");

        input.setText(item_value);
        input.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
        input.setSingleLine(false)
        input.setLines(5);
        input.setMaxLines(5);
        input.setGravity(Gravity.LEFT | Gravity.TOP);
        builder.setView(input);

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


            }
        });

        builder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();

如果您想在键盘上启用自动完成,请添加TYPE_CLASS_TEXT标志:input.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_CLASS_TEXT); - quent

2
这对我有用。你可以在运行时EditText中使用这个属性。
<EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top|left"
        android:inputType="textMultiLine"
        android:lines="8"
        android:maxLines="10"
        android:minLines="6"
        android:scrollbars="vertical" />

1
Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Comment");

final EditText input = new EditText(this);

final String item_value = ItemList.get(position).get("comment");

input.setText(item_value);
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setSingleLine(false);
input.setMaxLines(5);
input.setGravity(Gravity.LEFT | Gravity.TOP);
builder.setView(input);

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

    }
});

builder.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
    dialog.dismiss();
    }
});
AlertDialog alert = builder.create();
alert.show();

0
在你的XML中设置属性android:inputType="textMultiLine"
如果不起作用,你必须实现TextWatcher并手动换行。

0
input.setSingleLine(false); 

将使您的编辑文本根据数据增加


0

包装在DialogFragment中的Kotlin版本:

import android.app.Dialog
import android.os.Bundle
import android.text.InputType
import android.view.Gravity
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.AppCompatEditText
import androidx.fragment.app.DialogFragment

class MultilineEditDialog : DialogFragment() {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val input = AppCompatEditText(requireContext()).apply {
            inputType = InputType.TYPE_TEXT_FLAG_MULTI_LINE
            isSingleLine = false
            setLines(3)
            maxLines = 3
            gravity = Gravity.START and Gravity.TOP
            hint = "Hint"
        }
        return AlertDialog.Builder(requireContext()).apply {
            setTitle("Title")
            setView(input)
            setPositiveButton(android.R.string.ok) { _, _ ->
                // TODO take an action
            }
            setNegativeButton(android.R.string.cancel, null)
        }.create()
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接