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()
}
}
有没有办法在 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()
}
}