2011-09-20 4 views
0

J'ai créé un menu en-tête qui ressemble beaucoup aux captures d'écran ci-dessous pour une application sur laquelle je travaille. Cependant, je n'arrive pas à comprendre comment faire pour que les boutons restent toujours alignés sur la droite et que le champ que le logo occupe remplisse automatiquement l'espace d'écran restant (c'est-à-dire après une rotation d'écran).Recréer Google+/Google Reader comme Header Nav Bar ??? (Android)

Screenshot I | Screenshot II

Je suis sûr que la solution a quelque chose à voir avec l'attribut layout_width mais je n'arrive pas à comprendre comment exactement. Toute aide est la bienvenue!!! Ils sont actuellement dans une RelativeLayout ...

<RelativeLayout android:layout_width="fill_parent" 
    android:layout_height="50sp" 
    android:background="@color/red" 
    android:padding="0px"> 

    <TextView android:id="@+id/logo" 
     android:layout_width="200sp" 
     android:layout_height="50sp" 
     android:text="Logo" android:gravity="center_vertical"/> 

    <TextView android:id="@+id/dividerOne" 
     android:layout_width="1px" 
     android:layout_height="50sp" 
     android:layout_toRightOf="@+id/logo" 
     android:layout_alignTop="@id/logo" 
     android:background="@color/white" 
     android:text="" /> 

    <TextView android:id="@+id/blockList" 
     android:layout_width="50sp" 
     android:layout_height="50sp" 
     android:layout_toRightOf="@+id/dividerOne" 
     android:layout_alignTop="@id/dividerOne" 
     android:gravity="center" 
     android:text="Block List" /> 

    <TextView android:id="@+id/dividerTwo" 
     android:layout_width="1px" 
     android:layout_height="50sp" 
     android:layout_toRightOf="@+id/blockList" 
     android:layout_alignTop="@id/blockList" 
     android:background="@color/white" 
     android:text="" /> 

    <TextView android:id="@+id/Log" 
     android:layout_width="50sp" 
     android:layout_height="50sp" 
     android:layout_toRightOf="@+id/dividerTwo" 
     android:layout_alignTop="@id/dividerTwo" 
     android:gravity="center" 
     android:text="Log"/> 

</RelativeLayout> 

Répondre

0

On @+id/logo essayer d'ajouter android:layout_weight="1"

Vous aurez également besoin de passer d'un RelativeLayout à un LinearLayout.

Voir http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html

+0

Ce n'est pas me laisser utiliser le poids comme paramètre. Est-ce seulement pour LinearLayouts? – Jabari

+0

Cela m'a conduit dans la bonne direction. J'ai dû faire les changements suivants: 1) use layout_weight (pas seulement "weight"!) 2) passer d'un RelativeLayout à un LinearLayout 3) enlever tous les attributs "layout_toRightOf" et "layout_alignTop" 4) définir toutes les hauteurs à fill_parent (pour une raison quelconque) – Jabari

+0

Désolé pour ma brièveté. Je voulais dire layout_weight, heureux que vous ayez pris la bonne direction; Je n'ai pas non plus considéré la limitation de 'layout_weight' (car elle ne s'applique qu'à' LinearLayout' et 'TableLayout'). Il est préférable d'utiliser un LinearLayout dans ce cas car RelativeLayout est beaucoup plus complexe et donc plus lourd sur l'appareil. Votre mise en page est évidemment un ensemble linéaire de 'View's et n'a donc pas besoin de cette complexité. – Dallas