проблема с вложенными макетами - PullRequest
1 голос
/ 01 декабря 2010

Я только начинаю Android и застрял. Я сделал простое приложение / представление. Идея состоит в том, чтобы нарисовать линейный лабиринт сверху, с кнопками движения внизу. Мое приложение рисует только х с парой линий в кадре, но это работает. Проблема в том, что мои кнопки отрисовываются слишком далеко и имеют высоту.

Я предполагаю, что проблема заключается в моем макете XML:

<?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">

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1" > 

            <none.maze.MazeView
             android:id="@+id/maze"
                android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        />

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
                <TextView
                 android:id="@+id/text"
                    android:text="@string/maze_layout_text_text"
                    android:visibility="visible"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:gravity="center_horizontal"
                    android:textColor="#ff8888ff"
                    android:textSize="24sp"/>
            </RelativeLayout>

        </FrameLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >             

            <Button
                android:id="@+id/left"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Left" 
                android:layout_weight="1" 
                />

            <Button
                android:id="@+id/forward"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Forward" 
                android:layout_weight="1" 
                />

            <Button
                android:id="@+id/right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Right" 
                android:layout_weight="1" 
                />

        </LinearLayout>

</LinearLayout>

Ответы [ 3 ]

1 голос
/ 01 декабря 2010

Я думаю, вы не должны использовать layout_height="fill_parent" и layout_weight одновременно.Попробуйте установить layout_height="0dip" и layout_weight="1" для FrameLayout и layout_height="wrap_content" для нижнего LinearLayout.Нижний LinearLayout не должен иметь атрибут layout_weight.

0 голосов
/ 01 декабря 2010

Весь ваш макет слишком раздутый и неэффективный. Вы используете слишком много ViewGroup с. Я рекомендую прочитать о RelativeLayout с и особенно о всей серии Layout Tricks .

0 голосов
/ 01 декабря 2010

Используйте Hierarchy Viewer для отладки макета. Это довольно круто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...