Respuestas:
Por defecto, todos los EditText
widgets en Android son multilínea.
Aquí hay un código de muestra:
<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
anula al menos los atributos lines
y minLines
. Tuve inputType="phone"
y los atributos de líneas no tuvo ningún efecto
IndexOutOfBoundsException
tan pronto como escribe algo porandroid:inputType="textMultiLine"
Puede que le resulte mejor usar:
<EditText
...
android:inputType="textMultiLine"
/>
Esto se debe a que android:singleLine
está en desuso.
singleLine
parte obsoleta de su respuesta (hace mucho tiempo). Con respecto a la pregunta en sí, esa es la parte más importante de su respuesta.
IndexOutOfBoundsException
tan pronto como escribe algo. Multilínea ahora es el valor predeterminado.
Esto funciona para mí, en realidad estos 2 atributos son importantes: inputType y líneas . Además, es posible que necesite una barra de desplazamiento, el siguiente código muestra cómo hacer una:
<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" />
Así es como apliqué el fragmento de código a continuación y funciona bien. Espero que esto ayude a alguien.
<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"
/>
¡Salud! ...Gracias.
Intente esto, agregue estas líneas a su vista de edición de texto, agregaré las mías. asegúrate de entenderlo
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"/>
y en su clase de Java haga clic en la lista para hacer clic en este texto de edición de la siguiente manera, agregaré los nombres míos y chane de acuerdo con los suyos.
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;
}
});
Esto funciona bien para mi
EditText tiene una propiedad singleLine . Puede establecer en el XML o llamando a setSingleLine (falso); http://developer.android.com/reference/android/widget/TextView.html#setSingleLine%28%29
Todo esto es bueno, pero no funcionará en caso de que tenga su texto de edición dentro de la vista de desplazamiento del nivel superior :) Quizás el ejemplo más común es la vista "Configuración" que tiene tantos elementos que van más allá del área visible. En este caso, los coloca a todos en la vista de desplazamiento para hacer que la configuración se pueda desplazar. En caso de que necesite texto de edición desplazable de varias líneas en su configuración, su desplazamiento no funcionará.
<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
/>
Para deshabilitar la cantidad de líneas que se asignaron previamente en el tema, use el atributo xml: android:lines="@null"
Aprendí esto de http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ , aunque no me gusta el sitio web. Si desea multilínea PERO desea retener el botón Intro como botón de publicación, establezca el "desplazamiento horizontal" de la vista de lista en falso.
android:scrollHorizontally="false"
Si no funciona en xml, hacerlo programáticamente funciona de manera extraña.
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" />
y en la Actividad para eliminar "\ n", el usuario presiona nextline
String editStr= edittxtAddress.getText().toString().trim();
MyString= editStr.replaceAll("\n"," ");
si alguien está usando AppCompatEditText, entonces necesita establecer inputType = "textMultiLine" aquí está el código que puede copiar
<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"
/>
para el fondo
<?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>
Otra buena cosa que hacer es usar android:minHeight
junto con android:layout_height="wrap_content"
. De esta manera, puede establecer el tamaño de la edición cuando está vacía, y cuando el usuario ingresa cosas, se estira según la cantidad de entradas del usuario, incluidas varias líneas.