创建多编程的EditText(Create a multiline EditText program

2019-07-20 09:51发布

我想创建由代码多的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);

但它仍然是在一个单行。

Answer 1:

这应该这样做

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


Answer 2:

你也可以使用这样的:

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


Answer 3:

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

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


Answer 4:

在代码中包含此:

txt.setLines(maxlines);

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



Answer 5:

终于为我工作的组合是:

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

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



Answer 6:

在我的手机,改变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, this@multiLineEditText as ViewGroup, false) as EditText }, theme, init)

在Android上开发吮吸这么难。



Answer 7:

试试这个

txt.setLines(number of lines);


Answer 8:

除了上述的建议 - 你可能需要设置下面的附加参数,如果你不能够得到这个工作

texInput.setHorizontallyScrolling(false);
texInput.setHorizontalScrollBarEnabled(false);

如果您正在改变的EditText的高度编程,那么你可能想通过调用requestLayout请求布局太()。



文章来源: Create a multiline EditText programmatically