开发者

Android view fills screen using linerlayout

开发者 https://www.devze.com 2023-01-10 02:33 出处:网络
Trying to write a game such that most of the screen gets filled with my GameView (custom view, derived from View)

Trying to write a game such that most of the screen gets filled with my GameView (custom view, derived from View)

I then want to have an area at the bottom of the screen for 开发者_开发百科messages etc. In the following I'm just trying to put a button there to illustrate the issue.

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

When this runs the button never shows. If I move the button before the GameView then it works with the button at the top of the screen. As it is above GameView is somehow grabbing all the screen. Tried also giving GameView a layout_weight of 1 with button having 0 (and vice-versa)

Do I have to implement the onMeasure stuff in GameView (which I couldn't quite get my head round yet) or am I missing something?


If the size of your GameView is as big as the screen, your Button won't show, because with "wrap_content" you give your GameView the permission to take as much of the LinearLayout as it needs.

Try it something like this:

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

Hope this helps


With the LinearLayout, just give a layout_weight of 1 to the GameView, don't add any weight to the button. That should work.

If it still doesn't work, then also use 0px for the GameView layout_height, eg:

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

精彩评论

暂无评论...
验证码 换一张
取 消