2011-09-07 15 views
6

Ho tentato di creare un layout di chat Android in xml, ma non ho potuto ottenere le cose come volevo. Questo è il più vicino ho potuto ottenere:Creazione di un layout di chat?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="10" > 
     <TextView 
      android:text="@string/text" 
      android:id="@+id/textOutput" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp" 
      android:paddingTop="5dp" /> 
    </ScrollView> 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="100" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp" 
     android:paddingBottom="5dp" 
     android:baselineAligned="true"> 
     <EditText android:layout_weight="1" android:id="@+id/textInput" 
      android:layout_height="45dp" android:layout_width="fill_parent"> 
      <requestFocus></requestFocus> 
     </EditText> 
     <Button android:layout_weight="1" android:text="Send" 
      android:layout_height="45dp" android:layout_width="125dp" 
      android:id="@+id/btnSend"></Button> 
    </LinearLayout> 
</LinearLayout> 

Ciò si traduce in this. Il problema con questo layout (che è piuttosto disordinato), è che non voglio che la dimensione del LinearLayout inferiore sia una percentuale. Voglio che sia un'altezza fissa e il TextView in ScrollView (è questo il modo migliore per far scorrere il testo di grandi dimensioni?) Per riempire il resto dello schermo. Devo mancare qualche attributo o qualcosa del genere.

risposta

8

Cercate di non dare la parte inferiore di un peso, ma solo avvolgere il contenuto, quindi hanno il riempimento di scorrimento in alto spazio rimanente dandogli un peso di 1. Ti piace questa

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" > 
     <TextView 
      android:text="@string/text" 
      android:id="@+id/textOutput" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp" 
      android:paddingTop="5dp" /> 
    </ScrollView> 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp" 
     android:paddingBottom="5dp" 
     android:baselineAligned="true"> 
     <EditText android:layout_weight="1" android:id="@+id/textInput" 
      android:layout_height="45dp" android:layout_width="0dip"> 
      <requestFocus></requestFocus> 
     </EditText> 
     <Button android:text="Send" 
      android:layout_height="45dp" android:layout_width="125dp" 
      android:id="@+id/btnSend"></Button> 
    </LinearLayout> 
</LinearLayout> 
+0

Grazie mille! Posso chiederti cosa significa 0dip? È lo stesso di 0dp? –

+0

Credo che significhi la stessa cosa per Android. L'unica cosa importante dell'utilizzo di tale valore è che si tratta di un hack di efficienza per la logica di layout. È usato per dire ad Android che è questo valore per eseguire la ponderazione su (larghezza o altezza). Non è un grosso problema, basta usare qualsiasi scala che si tradurrebbe in 0! – Kurru

Problemi correlati