Я пытаюсь лучше понять макеты 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>