2012-11-08 76 views
2

首先,這是不是一個重複的問題,要盡我所能,我已經嘗試了所有(有很多)類似的問題。這些問題的解決方案似乎是非常主觀的,特定於特定情況。左使用重力或linear_gravity在XML對準圖像的LinearLayout

我的佈局當前顯示如下。黑匣子圖像(標誌身體,分別),顏色代表每種佈局:

Screenshot of Layout

我的XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000" 
    android:padding="0px" 
    android:layout_margin="0px" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_weight="16" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#FFF" 
     android:gravity="top|center" 
     android:orientation="horizontal"> 
     <ImageView 
      android:id="@+id/logo" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/logo" 
      android:layout_gravity="top|center" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_weight="4" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#00F" 
     android:gravity="bottom|left" 
     android:orientation="vertical"> 
     <ImageView 
      android:id="@+id/body" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/body" 
      android:layout_gravity="bottom|left" /> 
    </LinearLayout> 

</LinearLayout> 

在這裏你可以看到我有一個父線性佈局,分成兩個孩子線性佈局。這是因爲我需要將圖像在頁面的該部分中進行不同的定位。

概括地說,我需要標誌要垂直對齊到頂部,身體水平對齊到左下角。

現在,我已經嘗試了幾件事情:

  • 使用RelativeLayout,而不是線性
  • 開關gravitylayout_gravity兩者的LinearLayout和ImageView的,以排除各
  • 相當有信心的組合沿match_parent寬度和高度是我想要的,但我已經嘗試過不同的組合wrap_content

我終於明白:

  • gravity:top需要父視圖使用orientation:horizontal
  • gravity:left需要父視圖使用orientation:vertical
  • gravity適用於視圖的孩子
  • linear_gravity如何應用該孩子與其父母對齊
  • 在父母上使用gravity的相同值並且使用linear_gravity的孩子可能會有相同的效果(當使用一個而不是另一個)?

希望這是足夠的信息。我很困難的時間圍繞着這些佈局如何運作。

非常感謝您的幫助!

回答

2

我認爲你的問題是你設置圖像視圖的尺寸爲match_parent

RelativeLayout (width=match_parent, height=match_parent) 
    ImageView (width=wrap_content, height=wrap_content, 
      alignParentTop=true, centerHorizontal=true) 
    ImageView (width=wrap_content, height=wrap_content, 
      alignParentBottom=true, alignParentLeft=true) 

你不需要任何重力這裏設置:因爲它似乎是最有效的在你的情況下(僞XML代碼),我會用一個RelativeLayout的。您可能需要根據圖像大小來使用scaleType屬性。

+0

謝謝!使用這種方法,我確實設法使其運作。對於底部圖像,它確實需要'scaleType =「fitStart」'來保留圖像大小和對齊。再次感謝。 – MusikAnimal