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.
Para aquellos que lo hacen de forma pragmática, es posible que desee ver esta pregunta Android EditText Multiline no funciona como debería para comprobar que está configurando correctamente el tipo de entrada. Ese fue mi problema
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>