1

我想製作一個水平菜單欄,但是由於某些原因,當我使用權重時,它們沒有水平對齊,有什麼建議?使用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> 

這就是它的樣子,它們是垂直對齊的。不是水平:

enter image description here

EDIT

這也是繼第一建議:

enter image description here

+0

他們不會對齊水平,因爲Android的' :layout_gravity =「center」'只能在垂直方向上對水平方向的LinearLayout進行操作(反之亦然,對於垂直方向)。您是否嘗試在嵌套的LinearLayouts上添加'android:gravity =「center」'而不是?或者,您可以隨時將它們交換爲類似「FrameLayout」或「RelativeLayout」的東西,這樣可以更好地控制定位。 –

回答

0

每個圖像視圖需要android:gravity="center"

您定心含linearlayouts ......我不明白爲什麼所有正在使用他們......你應該使用一個,像這樣:

<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

按照您提供的內容編譯成以上內容。我會將圖像添加到我的帖子中。 – Brianjs

+0

犯了一個錯誤。所有的圖像寬度需要設置爲「0dp」。我不確定你是否應該保留'android:adjustViewBounds =「false」'或將它設置爲true ......作爲最後的手段,恢復到你所擁有的狀態,但是爲每個添加'android:gravity =「center」' ImageView的。 – Barak

+0

好吧,我嘗試了所有提到的,沒有任何工作。第一部分沒有改變任何奇怪的東西,重複使用我的舊代碼與你的建議只是保持它的方式顯示在我的第一張圖片。很混亂。它垂直居中但不水平居中。 – Brianjs