Справка по макету, Исчезающие LinearLayouts - PullRequest
0 голосов
/ 30 июня 2011

Я пытаюсь создать простой макет с двумя кнопками в горизонтальном линейном макете с центром в нижней части страницы (так layout_gravity = "bottom").И мне также нужен вертикальный линейный макет, центрированный на экране, который может содержать 3 TextViews (которые будут реализованы позже в программе, поэтому просто нужно LinearLayout, чтобы иметь возможность удерживать 3 TextView).

Я могу получитькнопки в их правильных местах (хотя я хотел бы, чтобы они были более разделены), но каждый раз, когда я пытаюсь сделать TextViews LinearLayout, он либо не появляется, либо заставляет другой исчезать.Я пытался свалить это на некоторое время ... кто-нибудь может помочь?Спасибо

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@color/background">
<LinearLayout
    android:id="@+id/game_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="bottom"
    android:layout_margin="100dip">
    <Button
        android:id="@+id/next_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/next_label"
        android:layout_gravity="center"/>
    <Button
        android:id="@+id/repeat_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/repeat_label"
        android:layout_gravity="center"/>   
</LinearLayout>
<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_weight="1">
</LinearLayout>
</LinearLayout>

Ответы [ 3 ]

1 голос
/ 30 июня 2011
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout android:id="@+id/linearLayout2"
        android:layout_width="match_parent" android:orientation="vertical"
        android:layout_height="wrap_content" android:layout_weight="1"
        android:gravity="center">
    </LinearLayout>
    <LinearLayout android:id="@+id/linearLayout1"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_gravity="bottom" android:gravity="center">
        <Button android:text="Button" android:id="@+id/button1"
            android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="Button" android:id="@+id/button2"
            android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </LinearLayout>
</LinearLayout>

linearlayout2 - это вертикальное расположение детей в центре

Это то, что вам нужно?

enter image description here

EditText с "Некоторое текстовое значение добавляется через Java с обоими значениями LayoutParams, установленными на WRAP_CONTENT

0 голосов
/ 30 июня 2011

Убедитесь, что горизонтальная LinearLayout из 2 Button s имеет высоту, установленную в wrap_content.Также вы можете взять RelativeLayout и оставить два LinearLayout вертикальной и горизонтальной ориентации соответственно.

Этого кода должно быть достаточно:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background">
    <LinearLayout
        android:id="@+id/game_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignparentbottom="true"
        android:layout_margin="100dip">
        <Button
            android:id="@+id/next_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/next_label"
            android:layout_gravity="center"/>
        <Button
            android:id="@+id/repeat_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/repeat_label"
            android:layout_gravity="center"/>   
    </LinearLayout>
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerinparent="true"
        android:layout_weight="1">
    </LinearLayout>
</RelativeLayout>

Предупреждение: корпуссвойств может быть разным, поэтому исправьте их.

0 голосов
/ 30 июня 2011

Быстрая идея:

Установите вертикальную высоту LinearLayout равной 0dp, и используйте weight, чтобы дать ей остальное все оставшееся пространство после размещения вашего другого вида, например, отдай android:layout_weight="1"

Хитрая часть должна установить высоту в 0, поэтому она на самом деле использует layout_weight.

Предостережение: уже поздно, и я выпил пару бокалов вина. :)

...