Android-представление заполняет экран с помощью линейного размещения - PullRequest
0 голосов
/ 05 августа 2010

Попытка написать игру так, чтобы большая часть экрана была заполнена моим GameView (пользовательский вид, производный от View)

Затем я хочу иметь область внизу экрана для сообщений и т. Д. Далее я просто пытаюсь поместить туда кнопку, чтобы проиллюстрировать проблему.

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

    <my.GameView 
        android:id="@+id/gameview" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" />

    <Button 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Action1" />

</LinearLayout>

При этом кнопка никогда не отображается. Если я перемещаю кнопку перед GameView, она работает с кнопкой в ​​верхней части экрана. Как это выше, GameView как-то захватывает весь экран. Попытался также дать GameView layout_weight 1 с кнопкой, имеющей 0 (и наоборот)

Должен ли я реализовывать в GameView материал onMeasure (который я пока не мог понять) или я что-то упустил?

Ответы [ 2 ]

2 голосов
/ 05 августа 2010

Если размер вашего GameView такой же большой, как и экран, ваша кнопка не будет отображаться, потому что с помощью "wrap_content" вы даете GameView разрешение брать столько LinearLayout, сколько ему необходимо.

Попробуйте что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<Button
    android:id="+@id/myButton"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"/>
<my.GameView 
    android:id="@+id/gameview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_above="@id/myButton"/>
</RelativeLayout>

Надеюсь, это поможет

1 голос
/ 05 августа 2010

С помощью LinearLayout просто задайте layout_weight 1 для GameView, не добавляйте никакого веса к кнопке. Это должно работать.

Если это все еще не работает, то также используйте 0px для GameView layout_height, например:

<my.GameView 
    android:id="@+id/gameview" 
    android:layout_width="fill_parent" 
    android:layout_height="0px" 
    android:layout_weight="1"/>
...