2016-11-19 3 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 также имеет width 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> 

ответ

0

Вы можете найти много источников и блогов в интернете о LinearLayout и layout_weight.

Есть некоторые полезные сайты:

https://ugia.io/2012/01/19/android-linearlayout-distribution-explained-weight-and-sizes/

http://www.101apps.co.za/index.php/articles/using-android-s-layout-weight-attribute.html

https://blog.stylingandroid.com/layout-weights-part-1/

https://www.mkyong.com/android/android-linearlayout-example/