Відповіді:
За замовчуванням всі 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"
. Таким чином ви можете встановити розмір редагування, коли він порожній, а коли користувач вводить матеріал, він розтягується відповідно до кількості введених користувачем даних, включаючи кілька рядків.