2012-07-22 18 views
9

Ho scritto un codice XML, in cui voglio che l'EditText sia espanso per adattarsi alla larghezza genitore. Dopo aver trascorso così tanto tempo, non riesco a trovare un modo per espandere EditText.Perché EditText non si espande in fill_parent

Ecco il mio XML:

<?xml version="1.0" encoding="UTF-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip">   
     <TextView 
      android:text="Comment" 
      android:layout_width="match_parent" 
      android:textStyle="bold" 
      android:padding="3dip" />  
    </TableRow> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip">   
     <EditText 
      android:id="@+id/EditText02" 
      android:layout_height="wrap_content" 
      android:lines="5" 
      android:gravity="top|left" 
      android:inputType="textMultiLine" 
      android:scrollHorizontally="false" 
      android:minWidth="10.0dip" 
      android:maxWidth="5.0dip"/> 
    </TableRow> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip" 
     android:gravity="center">   
     <Button 
      android:id="@+id/cancel" 
      android:text="Next" />  
    </TableRow> 
</TableLayout> 
</LinearLayout> 

cosa ho fatto di sbagliato qui. Mi aiuti per favore.

risposta

2

Aggiungere una colonna aggiuntiva di TextView in ogni riga.

Questo codice può essere d'aiuto.

<?xml version="1.0" encoding="UTF-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1" 
    android:orientation="vertical"> 

    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip"> 

     <TextView android:text="" />  

     <TextView 
      android:text="Comment" 
      android:layout_width="match_parent" 
      android:layout_marginRight="10dp" 
      android:textStyle="bold" 
      android:padding="3dip" />  
    </TableRow> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip"> 

     <TextView android:text="" />   

     <EditText 
      android:id="@+id/EditText02" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="20dp" 
      android:lines="5" 
      android:gravity="top|left" 
      android:inputType="textMultiLine" 
      android:scrollHorizontally="false" /> 
    </TableRow> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip" 
     android:gravity="center"> 

     <TextView android:text="" />   

     <Button 
      android:id="@+id/cancel" 
      android:layout_marginRight="10dp" 
      android:text="Next" />  
    </TableRow> 
</TableLayout> 
</LinearLayout> 
1

Non sicuro se serio.

Si hanno larghezza minima del EditText (minWidth) insieme più ampio di quello che è la larghezza massima (maxWidth), e non hanno dato un attributo layout_width (che si dovrebbe impostare a match_parent).

+0

ho dato un layout_width a match_parent, ma nulla sta cambiando. – user1462473

+0

Rimuovi anche gli attributi 'maxWidth' e' minWidth'. – kcoppock

0

penso che vi manca l'attributo android:orientation dal LinearLayout

In secondo luogo, se questo è tutto ciò che si richiede, si può evitare di utilizzare un TableLayout e utilizzare solo un singolo LinearLayout con android:orientation="vertical" e tutti gli altri tre View s in esso.

+0

'android: orientation' non è obbligatorio. Il valore predefinito è 'orizzontale' secondo http://developer.android.com/reference/android/widget/LinearLayout.html. –

8

Tipo di vecchio, ma credo di avere qualcosa da aggiungere.

Credo che in base alla documentazione (riportata di seguito) layout_width e layout_height siano predeterminati per tutti i bambini TableRow.

Invece, il peso di layout può essere utilizzato per determinare la larghezza/altezza degli elementi all'interno di un TableRow. Cioè, a meno che tu non voglia impostare la sua proprietà android: ems e dargli una larghezza in base alla sua dimensione del carattere.

Ad esempio:

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:hint="@string/place" 
     android:inputType="textPersonName" > 

     <requestFocus /> 
    </EditText> 

</TableRow> 

Questo ha prodotto per me una vasta EditText a schermo intero all'interno di una TableRow.

Ecco una citazione dal documentation di TableRow:

I figli di un TableRow non hanno bisogno di specificare il layout_width e layout_height attributi nel file XML. TableRow applica sempre quei valori rispettivamente MATCH_PARENT e WRAP_CONTENT.

Il problema è, come sappiamo, che in realtà non accade. Sospetto che layout_width riceva anche "WRAP_CONTENT".

0

è possibile utilizzare layout_weight="1" in edittextview.

6

Si prega di aggiungere al vostro android:stretchColumns="0" TableLayout

+0

Fantastico! Questo è perfetto per me !! grazie – arttioz

0

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/back" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" -->> change to 0dip android:paddingRight="@dimen/activity_horizontal_margin" -->> change to 0dip android:paddingTop="@dimen/activity_vertical_margin" tools:context=".StartUp" >

Problemi correlati