2016-11-19 92 views
-1

我想要更好地理解android佈局。在下面的例子中,我解決了我的問題,但只能通過試驗和錯誤。我想了解它爲什麼起作用。android佈局重量和重力問題

我在另一個佈局中設置了「標題」行。我希望第一部分儘可能使用寬度,第二部分只使用它所需要的部分。因此,我將layout_1設置爲1,layout_2的權重爲0.最初,我的layout_width爲match_parent。這導致layout_2佔據整個寬度並使layout_1消失。我最終通過在layout_2上將寬度設置爲wrap_content來修復它。我知道layout_2有寬度wrap_content是有意義的。但不明白爲什麼layout_2 match_parent會佔用整個寬度,當它的權重爲0,layout_1的寬度也是match_parent時。

下面是一個代碼示例。

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

<LinearLayout android:id="@+id/header_layout_1" 
       android:orientation="horizontal" 
       android:layout_height="wrap_content" 
       android:layout_width="match_parent" 
       android:layout_gravity="center" > 

    <LinearLayout android:orientation="horizontal" 
        android:layout_height="match_parent" 
        android:layout_width="match_parent" 
        android:gravity="center" 
        android:layout_weight="1"> 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="some text"/> 
    </LinearLayout> 

    <!-- changing width on header_layout_2 to match_parent takes over layout, wrap_content gives me what I want --> 
    <LinearLayout android:id="@+id/header_layout_2" 
      android:orientation="horizontal" 
        android:layout_height="match_parent" 
        android:layout_width="match_parent" 
        android:layout_weight="0"> 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="some more text"/> 
    </LinearLayout> 
</LinearLayout> 
<!--end of header--> 
</LinearLayout> 

回答