Android AlertDialog 多行 EditText

Android AlertDialog multiline EditText

有没有办法在 Android[= 中的 AlertDialog 中创建多行 EditText 24=]。我设置了 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();

我的对话框是这样的。

所以我该如何解决这个问题。谢谢和问候。

在您的 XML 中设置属性 android:inputType="textMultiLine"

如果不行,你得实现TextWatcher,自己手动断行。

使用输入类型 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();

这对我有用。您可以将此 属性 用于运行时 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" />
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();

为您的 EditText 尝试此代码:

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

包含在 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()
    }
}