Подтвердить что ты не робот

Создание многострочного 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);

Но он все еще находится в одной строке. Любая помощь?

4b9b3361

Ответ 1

Это должно сделать это

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

Ответ 2

Вы также можете использовать это:

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

Ответ 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);

Ответ 4

Включите это в свой код:

txt.setLines(maxlines);

maxlines будет максимальным количеством строк, которое вы хотите разрешить в своем EditText.

Ответ 5

Комбинация, которая, наконец, работала для меня, была:

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

По крайней мере, частично я использовал setInputType для настройки нескольких различных параметров, поэтому он имел больше смысла, чем некоторые другие возможности.

Ответ 6

Попробуйте это

txt.setLines(number of lines);

Ответ 7

На моем телефоне изменение imeOptions и inputType ничего не делает; установка motionMethod и/или 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, [email protected] as ViewGroup, false) as EditText }, theme, init)

Разработка на Android так тяжела.