Відповіді:
За замовчуванням всі EditTextвіджети в Android є багаторівневими.
Ось приклад коду:
<EditText
android:inputType="textMultiLine" <!-- Multiline input -->
android:lines="8" <!-- Total Lines prior display -->
android:minLines="6" <!-- Minimum lines -->
android:gravity="top|left" <!-- Cursor Position -->
android:maxLines="10" <!-- Maximum Lines -->
android:layout_height="wrap_content" <!-- Height determined by content -->
android:layout_width="match_parent" <!-- Fill entire width -->
android:scrollbars="vertical" <!-- Vertical Scroll Bar -->
/>
inputTypeпринаймні заперечення linesта minLinesатрибути. У мене були inputType="phone"і атрибути рядків не мали ефекту
IndexOutOfBoundsExceptionяк тільки ви щось набираєте черезandroid:inputType="textMultiLine"
Можливо, вам буде краще використовувати:
<EditText
...
android:inputType="textMultiLine"
/>
Це тому android:singleLine, що застаріло.
singleLineчастину своєї відповіді (давно). Що стосується самого питання, то це найважливіша частина їх відповіді.
IndexOutOfBoundsExceptionяк тільки ви щось набираєте. За замовчуванням багаторядкова зараз.
Це працює для мене, насправді ці 2 атрибути є важливими: inputType та рядки . Крім того, вам може знадобитися смуга прокрутки, код нижче показує, як зробити її:
<EditText
android:id="@+id/addr_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="top|left"
android:inputType="textEmailAddress|textMultiLine"
android:lines="20"
android:minLines="5"
android:scrollHorizontally="false"
android:scrollbars="vertical" />
Ось як я застосував фрагмент коду нижче, і він працює чудово. Сподіваюся, це допоможе комусь.
<EditText
android:id="@+id/EditText02"
android:gravity="top|left"
android:inputType="textMultiLine"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:lines="5"
android:scrollHorizontally="false"
/>
Ура! ...Дякую.
Спробуйте це, додайте ці рядки до перегляду тексту редагування, я додам моє. переконайтесь, що ви це зрозуміли
android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:scrollbars="vertical"
<EditText
android:inputType="textMultiLine"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText_newprom_description"
android:padding="10dp"
android:lines="5"
android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:minLines="5"
android:gravity="top|left"
android:scrollbars="vertical"
android:layout_marginBottom="20dp"/>
а у вашому класі java зробіть список редакторів кліків до цього редагування тексту наступним чином, я додаю мої, назви імен відповідно до вашого.
EditText description;
description = (EditText)findViewById(R.id.editText_newprom_description);
description.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
view.getParent().requestDisallowInterceptTouchEvent(true);
switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_UP:
view.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return false;
}
});
це добре працює для мене
EditText має властивість singleLine . Ви можете встановити в XML або зателефонувавши setSingleLine (false); http://developer.android.com/reference/android/widget/TextView.html#setSingleLine%28%29
Все це добре, але не спрацює, якщо у вас є редакційний текст у вікні прокрутки верхнього рівня :) Можливо, найпоширеніший приклад - це перегляд "Налаштування", який містить так багато елементів, що вони виходять за межі видимої області. У цьому випадку ви переведете їх у подання прокрутки, щоб зробити налаштування прокручуваними. Якщо вам потрібно редагувати текст у рядках, який можна прокручувати, його прокрутка не працюватиме.
<EditText
android:id="@id/editText" //id of editText
android:gravity="start" // Where to start Typing
android:inputType="textMultiLine" // multiline
android:imeOptions="actionDone" // Keyboard done button
android:minLines="5" // Min Line of editText
android:hint="@string/Enter Data" // Hint in editText
android:layout_width="match_parent" //width editText
android:layout_height="wrap_content" //height editText
/>
Щоб вимкнути кількість рядків, які раніше були призначені в темі, використовуйте атрибут xml: android:lines="@null"
Я дізнався про це з http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ , хоча сам веб-сайт мені не подобається. Якщо ви хочете, щоб багаторядкова НЕ хотіла зберегти кнопку введення як кнопку публікації, встановіть параметр "горизонтальне прокручування" listview на значення false.
android:scrollHorizontally="false"
Якщо він не працює в xml, це дивно працює програмно.
listView.setHorizontallyScrolling(false);
<EditText
android:hint="Address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textMultiLine|textNoSuggestions"
android:id="@+id/edittxtAddress"
android:layout_marginLeft="@dimen/textsize2"
android:textColor="@android:color/white"
android:scrollbars="vertical"
android:minLines="2"
android:textStyle="normal" />
а в розділі "Активність для видалення" натисніть наступний рядок користувача
String editStr= edittxtAddress.getText().toString().trim();
MyString= editStr.replaceAll("\n"," ");
якщо хтось використовує AppCompatEditText, то вам потрібно встановити inputType = "textMultiLine", тут ви можете скопіювати код
<androidx.appcompat.widget.AppCompatEditText
android:padding="@dimen/_8sdp"
android:id="@+id/etNote"
android:minLines="6"
android:singleLine="false"
android:lines="8"
android:scrollbars="vertical"
android:background="@drawable/rounded_border"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_25sdp"
android:layout_marginTop="32dp"
android:layout_marginEnd="@dimen/_25sdp"
android:autofillHints=""
android:gravity="start|top"
android:inputType="textMultiLine"
/>
для фону
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/_5sdp"/>
<stroke android:width="1dp" android:color="#C8C8C8"/>
</shape>
Ще одна акуратна річ - це використовувати android:minHeightразом із android:layout_height="wrap_content". Таким чином ви можете встановити розмір редагування, коли він порожній, а коли користувач вводить матеріал, він розтягується відповідно до кількості введених користувачем даних, включаючи кілька рядків.