我正在尝试按代码创建多行EditText。 这就是我使用的:
EditText txt = new EditText(this);
lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1.0f);
txt.setLayoutParams(lp);
txt.setSingleLine(false);
txt.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
但它仍在一条线上。
答案 0 :(得分:52)
这应该这样做
txt.setSingleLine(false);
txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
答案 1 :(得分:26)
您也可以使用:
txt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_MULTI_LINE);
答案 2 :(得分:14)
结合以上所有答案都是正确答案,所以这里是:
texInput.setSingleLine(false);
texInput.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
texInput.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
texInput.setLines(5);
texInput.setMaxLines(10);
texInput.setVerticalScrollBarEnabled(true);
texInput.setMovementMethod(ScrollingMovementMethod.getInstance());
texInput.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
答案 3 :(得分:3)
在您的代码中包含此内容:
txt.setLines(maxlines);
maxlines将是您希望在EditText中允许的最大行数。
答案 4 :(得分:1)
最终对我有用的组合是:
answerView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);
answerView.setSingleLine(false);
至少部分我使用setInputType
来配置几个不同的选项,因此它比其他一些可能性更有意义。
答案 5 :(得分:1)
在我的手机上,更改imeOptions和inputType什么都不做;设置movementMethod和/或scrollBarStyle会使组件如此糟糕,以致用户无法选择任何文本; isVerticalScrollBarEnabled和isHorizontalScrollBarEnabled什么都不做;我能做的最好就是使用
txt.setSingleLine(false);
(txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
似乎是不必要的)但是这不会在该死的EditText中显示任何滚动条。最终我放弃了,只要我需要一个多行的EditText,我就可以给布局片段充气。这是布局:
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:inputType="textMultiLine"
android:lines="4"
android:minLines="4"
android:gravity="top|start"
android:maxLines="4"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:scrollbars="vertical"
/>
这里是Anko片段:
fun ViewManager.multiLineEditText(@StyleRes theme: Int = 0, init: EditText.() -> Unit): EditText = ankoView(
{ ctx -> ctx.layoutInflater.inflate(R.layout.util_multilineedittext, this@multiLineEditText as ViewGroup, false) as EditText }, theme, init)
Android上的开发非常糟糕。
答案 6 :(得分:0)
试试这个
txt.setLines(number of lines);
答案 7 :(得分:0)
除了上述建议以外-如果您无法正常工作,则可能需要设置以下其他参数
texInput.setHorizontallyScrolling(false);
texInput.setHorizontalScrollBarEnabled(false);
如果要通过编程方式更改Edittext的高度,则可能还希望通过调用requestLayout()来请求布局。