2016-07-06 59 views
0

我試圖讓兩個TextView的一個到左側,另一個到右側。
我曾期待layout_gravity足以做到這一點。
但它不起作用。示例代碼:爲什麼layout_gravity設置爲左/右對水平LinearLayout沒有影響?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="300dp" 
       android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     > 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="LEFT" 
      android:textSize="14sp" 
      android:layout_gravity="left" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="RIGHT" 
      android:textSize="14sp" 
      android:layout_gravity="right" 
      /> 
    </LinearLayout> 

</LinearLayout> 

我在做什麼錯?

回答

2

試試這個:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="300dp" 
    android:layout_height="match_parent"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text="LEFT" 
     android:layout_weight=".5" 
     android:layout_gravity="start" 
     android:gravity="start" 
     android:textSize="14sp" /> 
    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text="RIGHT" 
     android:layout_weight=".5" 
     android:layout_gravity="end" 
     android:gravity="end" 
     android:textSize="14sp"/> 
</LinearLayout> 

+0

這似乎工作,但爲什麼我需要定義重力和體重是多少?我認爲'layout_gravity'設置父級內的位置。 「重力」僅用於文本(內容)。你能解釋一下嗎? – Jim

+0

你想要兩個文本均勻分佈一半和一半;這就是爲什麼我們需要在這裏使用權重。我們還需要將寬度設置爲零(0),因爲方向是水平的。權重將每個項目放在其位置(右側和左側)。重力將物品放置在其所需的位置。 – Eenvincible

+0

我認爲'layout_gravity'正確定位了'TextView'的父權。似乎我誤解了一些東西。 – Jim

0

LinearLayout不會爲它奠定了方向使用layout_gravity。您可以在水平方向LinearLayout中使用layout_gravity來控制它們垂直放置的方式:頂部,中間或底部。

您可以將您的LinearLayout更改爲垂直,然後您的左/右重力將起作用,但第二個TextView將放置得比第一個更低。我認爲這不是你想要的。

在我看來,你對LinearLayout提供的佈局邏輯不感興趣(這是將它放置在一個接一個的兒童身上)。你只需要一個左對齊,右對齊一個。如果您將TextView代入FrameLayout,則可以使用重力進行該效果。

+0

所以你的意思是忽略它? – Jim

+0

我將不得不閱讀更多關於此; @Marcin,請爲此提供相關文檔? – Eenvincible

+0

@Jim我已經擴展了我的答案,以解釋'LinearLayout'如何使用'layout_gravity'。 –

0

試試這個方法: 編輯Eenvincible的答案...

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="1" 
    > 
    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".5" 
     android:text="LEFT" 
     android:textSize="14sp" 
     android:layout_gravity="left" 
     /> 
    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".5" 
     android:text="RIGHT" 
     android:textSize="14sp" 
     android:layout_gravity="right" 
     /> 
</LinearLayout> 

相關問題