Autore Topic: Allineamento layout  (Letto 1387 volte)

Offline GiuseppeT

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    Windows 7, Mac OS X Lion
Allineamento layout
« il: 09 Dicembre 2011, 16:01:47 CET »
0
Salve ragazzi, so che è un problema stupido, ma non riesco a risolverlo. Devo allineare una due layout verticalmente. Uno contiene una list view e l'altro contiene una textedit e un button. Se nella listview ci sono abbastanza dati, ottengo l'effetto desiderato, ma se ad esempio è vuota, il layout che contiene il button e la textedit occupa tutto lo spazio. Come faccio a dire al layout che sta in basso di occupare solo lo spazio necessario e lasciare libero tutto il resto?
Vi allego il mio xml.
Codice (XML): [Seleziona]
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
   
        <RelativeLayout
           android:id="@+id/chatLayout"
           android:layout_width="wrap_content"
       android:layout_height="wrap_content"
           >
           
                <ListView
               android:id="@+id/chatListView"
               android:layout_width="fill_parent"
                       android:layout_height="wrap_content"
                       android:layout_marginBottom="50dp"
                       android:transcriptMode="alwaysScroll" />
               
        </RelativeLayout>
       
    <RelativeLayout
       android:id="@+id/sendMessageLayout"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentRight="true"
       android:layout_below="@+id/chatLayout"
       android:background="#CCCCCC"
       android:padding="10px" >
       
        <Button
           android:id="@+id/postMessageButton"
           android:layout_width="wrap_content"
           android:layout_height="40px"
           android:layout_alignParentRight="true"
           android:layout_centerVertical="true"
           android:background="@drawable/send_button"
           android:text="Invia"
           android:textColor="#FFFFFF"
           android:layout_marginLeft="10px"/>


        <EditText
           android:id="@+id/messageEditText"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentBottom="true"
           android:layout_alignParentLeft="true"
           android:layout_centerVertical="true"
           android:layout_toLeftOf="@+id/postMessageButton"
           android:inputType="textMultiLine" >

            <requestFocus />
        </EditText>

    </RelativeLayout>
   
</RelativeLayout>

Spero che qualcuno, mi sappia aiutare.
Grazie in anticipo per le risposte.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Allineamento layout
« Risposta #1 il: 09 Dicembre 2011, 16:17:49 CET »
0
Potresti allegare anche lo screenshot di come ti appare adesso?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline GiuseppeT

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    Windows 7, Mac OS X Lion
Re:Allineamento layout
« Risposta #2 il: 09 Dicembre 2011, 18:40:26 CET »
0
Si certo, anzi avrei dovuto pensarci prima io.
Ecco qui.


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Allineamento layout
« Risposta #3 il: 10 Dicembre 2011, 10:39:46 CET »
0
Togli il relativelayout attorno alla ListView e dichiarala così:

Codice (XML): [Seleziona]
                <ListView
              android:id="@+id/chatListView"
              android:layout_width="fill_parent"
              android:layout_height="0dip"
              android:layout_weight="1"
                      android:layout_marginBottom="50dp"
                      android:transcriptMode="alwaysScroll" />
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline GiuseppeT

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    Windows 7, Mac OS X Lion
Re:Allineamento layout
« Risposta #4 il: 10 Dicembre 2011, 14:07:40 CET »
0
Grazie per la risposta. Ho provveduto a fare lo modifiche che mi hai suggerito tu, ma nonostante ciò non ottengo l'effetto desiderato. :(



Io voglio che l'area grigia, sia alta quanto basta per contenere il button e la edittext.

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Allineamento layout
« Risposta #5 il: 10 Dicembre 2011, 14:25:09 CET »
0
metti lxml cosi:
 -linearlayout fill_parent in entrambe le dimensioni
   -- list view con weight 1 in altezza e width fill parent.
   -- layout grigio con wrap content in altezza e fill parent in larghezza.
   -- layout dei bottoni (a meno che non sia una tab host) con height wrap content
 - chiudi il linearlayout

cosi dovrebbe andare
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline GiuseppeT

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    Windows 7, Mac OS X Lion
Re:Allineamento layout
« Risposta #6 il: 10 Dicembre 2011, 15:09:42 CET »
0
Ho fatto le modifiche da te suggerite, ma ottengo come risultato grafico lo stesso che si vede nel primo screen.

Inserisco il codice sorgente scritto come da te suggerito. Magari ho sbagliato qualcosa.

Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >
   
   <ListView
      android:id="@+id/chatListView"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_weight="1" />
       
    <RelativeLayout
      android:id="@+id/sendMessageLayout"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:background="#CCCCCC">
       
        <Button
          android:id="@+id/postMessageButton"
          android:layout_width="wrap_content"
          android:layout_height="40px"
          android:layout_alignParentRight="true"
          android:layout_centerVertical="true"
          android:background="@drawable/send_button"
          android:text="Invia"
          android:textColor="#FFFFFF"
          android:layout_marginLeft="10px"/>


        <EditText
          android:id="@+id/messageEditText"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:layout_alignParentLeft="true"
          android:layout_centerVertical="true"
          android:layout_toLeftOf="@+id/postMessageButton"
          android:inputType="textMultiLine" >

            <requestFocus />
        </EditText>

    </RelativeLayout>
   
</LinearLayout>

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Allineamento layout
« Risposta #7 il: 10 Dicembre 2011, 15:43:50 CET »
+1
Prova questo approccio (buttato giù senza provarlo e senza allineamenti, quindi a limite di dovrebbe essere qualcosa da sistemare).

Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
   
   <ListView
     android:id="@+id/chatListView"
     android:layout_width="fill_parent"
     android:layout_height="0dp"
     android:layout_weight="1" />
       
   <LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal" >

        <EditText
         android:id="@+id/messageEditText"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:inputType="textMultiLine" />
   
        <Button
         android:id="@+id/postMessageButton"
         android:layout_width="wrap_content"
         android:layout_height="40px"
         android:background="@drawable/send_button"
         android:text="Invia"
         android:textColor="#FFFFFF"
         android:layout_marginLeft="10px"/>

   </LinearLayout>
   
</LinearLayout>


PS: android:layout_height="0dp" non è un errore, è fondamentale.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline GiuseppeT

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    Windows 7, Mac OS X Lion
Re:Allineamento layout
« Risposta #8 il: 10 Dicembre 2011, 18:32:41 CET »
0
Grazie bradipao, la tua soluzione da l'effetto desiderato. :)
Ringrazio ovviamente anche Nicola_D per la sua risposta.

Interessante è l'utilizzo di questo android:layout_height="0dp".
Quest'ultimo serve per dire ad android di considerare il tag android:layout_weight?