1

J'essaie de faire une barre de menu horizontale, mais pour une raison quelconque, lorsque j'utilise des poids, ils ne s'alignent pas horizontalement, des suggestions?Les images ne sont pas centrées lors de l'utilisation de layout_weights

<LinearLayout 
    android:id="@+id/bottombuttonslayout" 
    android:layout_width="match_parent" 
    android:layout_height="58dp" 
    android:layout_alignParentBottom="true" 
    android:weightSum="1.0" > 

<LinearLayout 
    android:id="@+id/listSlotBox" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight=".20" 
    android:gravity="center" > 

    <ImageView 
     android:id="@+id/listSlot" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="false" 
     android:background="@drawable/list" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/leftArrorSlotBox" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight=".20" > 

    <ImageView 
     android:id="@+id/leftArrowSlot" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="false" 
     android:background="@drawable/left_arrow" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/playSlotBox" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight=".20" > 

    <ImageView 
     android:id="@+id/playSlot" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="false" 
     android:background="@drawable/playing" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/rightArrowSlotBox" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight=".20" > 

    <ImageView 
     android:id="@+id/rightArrowSlot" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="false" 
     android:background="@drawable/right_arrow" /> 
</LinearLayout> 

Voici à quoi cela ressemble, ils s'alignent verticalement. non horizontalement:

enter image description here

EDIT

Ce qui suit est la première suggestion:

enter image description here

+0

Ils ne seront pas alignés horizontalement parce que 'Android : layout_gravity = "center" 'ne fonctionnera que verticalement pour un' LinearLayout 'orienté horizontalement (et vice versa pour un orienté verticalement). Avez-vous essayé d'ajouter 'android: gravity =" center "' sur les LinearLayouts imbriqués à la place? Alternativement, vous pouvez toujours les échanger pour quelque chose comme un «FrameLayout» ou «RelativeLayout», ce qui vous donnera un peu plus de contrôle sur le positionnement. –

Répondre

0

Chaque vue de l'image a besoin android:gravity="center".

Vous centrer les contenant linearlayouts ... Je ne comprends pas pourquoi vous utilisez tous ... vous devriez utiliser un, comme ceci:

<LinearLayout 
    android:orientation="horizontal" 
    android:id="@+id/bottombuttonslayout" 
    android:layout_width="match_parent" 
    android:layout_height="58dp" 
    android:layout_alignParentBottom="true" > 
    <ImageView 
     android:id="@+id/listSlot" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="false" 
     android:background="@drawable/list" 
     android:gravity="center"/> 
    <ImageView 
     android:id="@+id/leftArrowSlot" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="false" 
     android:background="@drawable/left_arrow" 
     android:gravity="center" 
     android:layout_weight="1" /> 
    <ImageView 
     android:id="@+id/playSlot" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="false" 
     android:background="@drawable/playing" 
     android:gravity="center" 
     android:layout_weight="1" /> 
    <ImageView 
     android:id="@+id/rightArrowSlot" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="false" 
     android:background="@drawable/right_arrow" 
     android:gravity="center" 
     android:layout_weight="1" /> 
</LinearLayout> 
+0

Suite à ce que vous avez fourni compilé à ce qui est ci-dessus. Je vais ajouter l'image à mon message. – Brianjs

+0

a commis une erreur. Toutes les largeurs pour les images doivent être définies sur "0dp". Et je ne sais pas si vous devriez garder 'android: adjustViewBounds =" false "' ou le mettre à vrai ... en dernier recours, revenir à ce que vous aviez, mais ajouter 'android: gravity =" center "' à chaque imageview. – Barak

+0

Bon d'accord j'ai essayé tout ce qui a été mentionné et rien n'a fonctionné. La première partie n'a rien changé de façon étrange et réutiliser mon ancien code avec votre suggestion a juste gardé la façon dont il a été affiché dans ma première image. Très perturbant. Il est centré verticalement mais pas horizontalement. – Brianjs

Questions connexes