type style studio propiedades inputtype example edittext android xml word wrap android-edittext

style - gettext android studio



Texto de ediciĆ³n de texto de Android Word-Wrap (9)

He intentado que mi cuadro EditText se ajuste a las palabras, pero parece que no puedo hacerlo.

He tratado con problemas mucho más complicados al desarrollar aplicaciones para Android, y parece que debería ser un proceso sencillo.

Sin embargo, el problema persiste, y tengo un cuadro de texto grande que solo me permite ingresar texto en una línea, continuar en línea recta y desplazarse horizontalmente al ingresar el texto.

Aquí está el código XML para el objeto EditText de mi archivo de diseño.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/myWidget48" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <ScrollView android:id="@+id/myScrollView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" > <LinearLayout android:id="@+id/widget37" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <EditText android:id="@+id/txtNotes" android:layout_width="300px" android:layout_height="120px" android:scrollbars="vertical" android:textSize="18sp" android:gravity="left" android:layout_marginTop="10dip" android:inputType="textCapSentences" > </EditText> </LinearLayout> </ScrollView> </LinearLayout>


Además de encontrar la fuente del problema, encontré la solución. Si se usa android:inputType , se debe usar textMultiLine para habilitar el soporte de varias líneas. Además, el uso de inputType reemplaza el código android:singleLine="false" . Si usa inputType, entonces, para reiterar, se debe usar textMultiLine o el objeto EditText solo consistirá de una línea, sin ajuste de palabras.

Editar: Gracias Jacob Malliet por proporcionar más buenos consejos sobre esto. Sugirió establecer la propiedad Boolean scrollHorizontally en false, ''android:scrollHorizontally="false"'' .

Ejemplo de código XML:

<EditText android:id ="@+id/edtInput" android:layout_width ="0dip" android:layout_height ="wrap_content" android:layout_weight ="1" android:inputType="textCapSentences|textMultiLine" android:maxLines ="4" android:maxLength ="2000" android:hint ="@string/compose_hint" android:scrollHorizontally="false" />


Encerrar toda la actividad en la vista de desplazamiento y colocar el siguiente texto de edición con diseño lineal funcionó como un amuleto para mí.

El texto de edición se desplazará verticalmente al presionar enter, codificar de la siguiente manera

<EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:hint="Enter somehting" android:inputType="textMultiLine" android:maxLength="2000" android:maxLines="6" android:scrollHorizontally="false" android:scrollbars="vertical" >


Me lo imaginé. La línea,

android:inputType="textCapSentences"

fue el problema Agregar esta línea a un objeto EditText hará que el objeto sea una sola línea EditText, y no permitirá que las palabras se envuelvan, ni permitirá que un usuario presione ''Enter'' para insertar un salto de línea o un retorno de carro en EditText.


Nota: paso 1: crea una clase personalizada para editText wordWrap.

Android no tiene esta propiedad. Pero puede reemplazar todos los caracteres de ruptura con ReplacementTransformationMethod.

public class WordBreakTransformationMethod extends ReplacementTransformationMethod { private static WordBreakTransformationMethod instance; private WordBreakTransformationMethod() {} public static WordBreakTransformationMethod getInstance() { if (instance == null) { instance = new WordBreakTransformationMethod(); } return instance; } private static char[] dash = new char[] {''-'', ''/u2011''}; private static char[] space = new char[] {'' '', ''/u00A0''}; private static char[] original = new char[] {dash[0], space[0]}; private static char[] replacement = new char[] {dash[1], space[1]}; @Override protected char[] getOriginal() { return original; } @Override protected char[] getReplacement() { return replacement; } } step 2 - In Activity , write below code,

En Android:

myEditText.setTransformationMethod(WordBreakTransformationMethod.getInstance());

En Kotlin:

myEditText.setTransformationMethod= WordBreakTransformationMethod.getInstance

En Xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <EditText android:id="@+id/myEditText" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="textCapSentences|textMultiLine" android:scrollHorizontally="false" /> </LinearLayout>


Ok, me di cuenta, debes configurar android:scrollHorizontally="false" para tu EditText en tu xml. Estoy bastante seguro de que esto debería funcionar.



Suponga que solo quiere tener una línea al principio y luego expandirla a 5 líneas y quiere tener un máximo de 10 líneas.

<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/etMessageBox" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:autoLink="all" android:hint="@string/message_edit_text_hint" android:lines="5" android:minLines="1" android:gravity="top|left" android:maxLines="10" android:scrollbars="none" android:inputType="textMultiLine|textCapSentences"/>

Al aumentar las android:lines puede definir ampliar la cantidad de líneas.


debe agregar el siguiente atributo a su texto de edición.

android:inputType="textMultiLine"

Además, si configura la altura o establece las líneas máximas de edittext en un valor específico, se desplazará cuando escriba mucho carácter.


<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/table" android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="1" > <TableRow android:id="@+id/newRow"> <LinearLayout android:layout_width="fill_parent" android:orientation="vertical" android:layout_height="wrap_content" android:gravity="left" android:paddingBottom="10dip"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Some Text" /> </LinearLayout> </TableRow> <View android:layout_height="2dip" android:background="#FF909090" /> <TableRow> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="10dip"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Some Text" android:paddingBottom="5dip" /> <EditText android:id="@+id/editbox" android:layout_width="wrap_content" android:layout_height="150px" android:gravity="top" android:inputType="textFilter" android:scrollHorizontally="false" /> </RelativeLayout> </TableRow> <TableRow> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/btnone" android:layout_width="3dip" android:layout_height="wrap_content" android:layout_margin="2dip" android:layout_weight="1" android:text="Btn" /> <Button android:id="@+id/btntwo" android:layout_width="3dip" android:layout_height="wrap_content" android:layout_margin="2dip" android:layout_weight="1" android:text="Btn" /> </LinearLayout> </TableRow> </TableLayout>