0

尝试编写一个游戏,使大部分屏幕都充满我的 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 东西(我还不能完全理解)还是我错过了什么?

4

2 回答 2

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>

希望这可以帮助

于 2010-08-05T08:55:02.727 回答
1

使用LinearLayout,只需将1 的layout_weight 赋予GameView,不要给按钮添加任何权重。那应该行得通。

如果还是不行,那么 GameView 的 layout_height 也使用 0px,例如:

<my.GameView 
    android:id="@+id/gameview" 
    android:layout_width="fill_parent" 
    android:layout_height="0px" 
    android:layout_weight="1"/>
于 2010-08-05T11:29:51.493 回答