2013-02-22 69 views
13

我试图通过代码创建多行EditText。 这是我使用:以编程方式创建多行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); 

但它仍然是在一个单行。任何帮助?

回答

40

这应该这样做

txt.setSingleLine(false); 
txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION); 
+2

是的先生。你说对了!它效果很好。格拉西亚斯。 – Ton 2013-05-09 19:31:12

+0

如果调用setEms(int),则这不起作用。 – 2015-05-21 04:25:41

3

在代码中包含此:

txt.setLines(maxlines); 

的maxlines将是你希望允许你的EditText行的最大数量。

0

试试这个

txt.setLines(number of lines); 
20

你也可以使用这样的:

txt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_MULTI_LINE); 
1

终于为我工作的组合为:

answerView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE); 
answerView.setSingleLine(false); 

至少部分我使用setInputType来配置几个不同的选项,所以它比其他一些可能性更有意义。

10

结合所有这些答案是正确的答案,以便在这里它是:

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); 
+0

谢谢,Android API在这方面非常糟糕。滚动条对我来说不可见,但这并不重要,因为至少文本最终能够以多行方式输入(以前没有Enter按钮,或者输入按钮插入空格而不是新行 - 那是多么迟钝)。 – 2017-04-19 07:20:33

+0

谢谢,但现在滚动条不可见,并且由于某种原因文本不可选。 – 2017-04-19 07:40:48

+1

这里缺少的唯一东西是:textInput..setGravity(Gravity.TOP | Gravity.LEFT); – 2017-10-12 17:08:47

0

在我的电话,改变imeOptions和的inputType什么都不做;设置movementMethod和/或scrollBarStyle会严重地拧紧组件,以至于用户将无法选择任何文本; isVerticalScrollBarEnabled和isHorizo​​ntalScrollBarEnabled什么都不做;我能做的最好的就是用

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" 
/> 

而这里的安口段:

fun ViewManager.multiLineEditText(@StyleRes theme: Int = 0, init: EditText.() -> Unit): EditText = ankoView(
    { ctx -> ctx.layoutInflater.inflate(R.layout.util_multilineedittext, [email protected] as ViewGroup, false) as EditText }, theme, init) 

开发在Android吸这么难。