使用linearlayout的Android视图填充屏幕

时间:2010-08-05 06:17:25

标签: android layout view android-linearlayout

尝试编写一个游戏,使大部分屏幕都充满了我的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 个答案:

答案 0 :(得分:2)

如果您的GameView的大小与屏幕一样大,那么您的Button将不会显示,因为使用“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 :(得分:1)

使用LinearLayout,只需给GameView一个layout_weight,不要为按钮添加任何权重。这应该工作。

如果它仍然不起作用,那么也可以使用0px作为GameView layout_height,例如:

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