2010-08-05 4 views
0

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

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

<?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 макету 1 из 1 с кнопкой, имеющей 0 (и наоборот)

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

ответ

1

С 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"/> 
+0

Добавление layout_weight 1 делает это. Я действительно думал, что уже пробовал это. Странная вещь в том, что когда она запускается, я включаю FULL SCREEN, но когда строка заголовка (с значками статуса wi-fi и т. Д.) Прокручивается, она закручивает макет, так что все дело в нескольких пикселей вниз. Сначала у него будет экран меню, который исправит это, хотя (надеюсь) – MrPurpleStreak

+0

Возможно, это было сначала не сработало, потому что вы также добавили layout_weight 0 к кнопке, я не уверен. То, что вы сообщаете о полноэкранном режиме, нечетно, возможно, вам следует искать или задавать другой вопрос об этом. – olivierg

+0

Немного больше поисковых запросов найдено на этом пути. (Http://groups.google.com/group/android-developers/browse_thread/thread/2de77043f32835aa/315d393bb8334db5) После установки флажков полного экрана установите следующее: getWindow(). SetFlags (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); – MrPurpleStreak

2

Если размер вашего 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="[email protected]/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> 

Надеется, что это помогает

+0

Спасибо - что работает :) Тем не менее думаю, что это должно быть возможно с LinearLayout, если я мог бы просто сказать чтобы дать GameView оставшееся пространство, когда все остальные представления были размещены (или, по крайней мере, получить GameView, чтобы сказать, что он был счастлив просто заполнить все пространство, которое было предоставлено) – MrPurpleStreak

Смежные вопросы