Если у меня есть 2 LinearLayouts split% 50 /% 50, то все в порядке. Весами являются 1 и 1. Как только я добавляю TextView внутри верхнего LinearLayout, он растягивает этот макет. Я использую wrap_content
, поскольку в документации сказано, что я должен, когда речь идет о весах.
Как видите, красный и зеленый должны быть разделены равномерно, а текст на сером фоне должен быть внутри красной рамки. Вот код:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#ff0000"
>
<TextView
android:text="@string/hello"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#cccccc"
android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#00ff00"
>
</LinearLayout>
Теперь, если я переключаюсь на «заполнить родителя» следующим образом, это на самом деле работает, но создает другую проблему. Вот код (пока все хорошо):
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#ff0000"
>
<TextView
android:text="@string/hello"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#cccccc"
android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#00ff00"
>
</LinearLayout>
Итак, взглянув выше, мы были вынуждены использовать fill_parent
, и мы подумали бы, что мы исправили проблему, но вот проблема, если мы используем fill_parent
(я вынул TextView, чтобы показать проблему, TextView в любом случае проблема не исчезнет):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="3"
android:background="#ff0000"
>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2"
android:background="#00ff00"
>
</LinearLayout>
</LinearLayout>
Как вы можете видеть, я назначаю веса 3 (верхний красный) и 2 (нижний зеленый), но в действительности они переворачиваются: красный становится 2, а нижний становится 3. Просто измерьте пиксели, см.
Вот результаты 3 кодов:
Просто чтобы прояснить, каждый раз, когда макет был обернут внутри (верхний макет):
android:layout_width="fill_parent"
android:layout_height="fill_parent"
С XML version="1.0" encoding="utf-8"
и соответствующим пространством имен.