Я пытаюсь создать макет Android, используя layout_weight
, чтобы он подходил для устройств всех размеров, и у меня возникли проблемы с пониманием его ассортимента.
Я заметил, что изменение layout_width
/ layout_height
повлияло на ассортимент layout_weight
, но я не понимаю, как.
Скажем, к примеру, я хочу иметь вертикальную LinearLayout
, разделенную на три внутренних LinearLayout
, так что один сверху и один снизу занимают 25% экрана, а в середине 50%, и это не должно зависеть от содержания внутренних макетов. (Если содержимое внутреннего элемента LinearLayout
слишком велико, оно не должно сдвигать другие макеты)
Чтобы сделать это, я должен установить атрибут layout_height
внутреннего LinearLayout
на fill_parent
или wrap_content
?
Спасибо!
EDIT: похоже, layout_weight обратно пропорционален размеру, который займет макет.
3 примера:
Вес 1/1/1 (работает как я ожидал)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#FF0000"/> //RED
<LinearLayout
android:id="@+id/layout2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#00FF00"/> //GREEN
<LinearLayout
android:id="@+id/layout3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#0000FF"/> //BLUE
</LinearLayout>
Результаты:
Вес 1/2/1 (Почему, о, почему?)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#FF0000"/> //RED
<LinearLayout
android:id="@+id/layout2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2"
android:background="#00FF00"/> //GREEN
<LinearLayout
android:id="@+id/layout3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#0000FF"/> //BLUE
</LinearLayout>
Результаты:
** Вес 3/2/3 (что я собирался сделать с 1/2/1):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="3"
android:background="#FF0000"/> //RED
<LinearLayout
android:id="@+id/layout2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2"
android:background="#00FF00"/> //GREEN
<LinearLayout
android:id="@+id/layout3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="3"
android:background="#0000FF"/> //BLUE
</LinearLayout>
Результаты: