2010-07-18 24 views
55

He intentado que mi cuadro EditText se ajuste a las palabras, pero parece que no puede hacerlo.Android Word-Wrap Texto de texto de edición

Me he enfrentado a problemas mucho más complicados al desarrollar aplicaciones de Android, y esto 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 recto, desplazarse horizontalmente al ingresar 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> 

Respuesta

133

Además de encontrar el origen 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 para 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" /> 
+1

Lo que me perdí fue android: layout_width = "0dp" – squeeish

+3

¿Por qué usas 'android: layout_width =" 0dip "'? Es invisible para mí, como suponía. –

+0

es ese trabajo para multiautocompletetextview ?? –

14

Ok lo he descubierto, debe establecer android:scrollHorizontally="false" para su EditText en su XML. Estoy bastante seguro de que esto debería funcionar.

+2

cinco respuestas diferentes, esta es la única que funcionó para mí (además de la horrible tabla que ni siquiera intenté) – yuttadhammo

+0

Esta es LA respuesta.No necesita 'Lines',' minLines'. 'maxLines' y' android: scrollHorizontally = "false" ', y' inputType' puede hacerlo. – Youngjae

8

Me di cuenta. La línea,

android:inputType="textCapSentences" 

era 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.

+1

Bien, simplemente usa 'android: inputType =" textCapSentences | textMultiLine "' en su lugar. Entonces su campo EditText comenzará con mayúsculas _y_ será multilínea. ¡Esto funciona para mi! Ahora veo que lo has puesto en una respuesta separada arriba de todos modos ... – snark

-4
<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> 
+3

Por favor, brinde algunos detalles de esta respuesta –

13

Supongamos que lo que desea es tener una línea al principio y luego expandirlo a 5 líneas y desea 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 android:lines puede definir expandirla el número de líneas.

+0

Esta debería ser la respuesta aceptada –

4

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

La edición de texto podría desplazarse verticalmente en sí de pulsar ENTER, el código 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" > 
+0

'" Introduzca algo "': D Pero a quién le importa;) #Typo – fWd82

3

debe agregar el siguiente atributo a su EditarTexto.

android:inputType="textMultiLine" 

también si ajusta la altura o configurar las maxLines de EditarTexto a un valor específico, éste se desplazará al escribir mucho carácter.

Cuestiones relacionadas