使视图显示在LinearLayout中

时间:2011-10-14 23:28:41

标签: java android

我有一个名为Game的类,它扩展了View。我有一个名为game.xml的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/game_layout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
</LinearLayout>

正如您所看到的,它是一个LinearLayout。现在我想做的是让我的游戏视图显示在LinearLayout中。下面是游戏中的相关代码:

public Game(Activity activ)
{
    activ.setContentView(R.layout.game);

    ...

    layout = (LinearLayout)activ.findViewById(R.id.game_layout);
    layout.addView(this);

    ...
}

public void onDraw(Canvas canvas)
{
    board.draw(canvas);
}

现在当我运行它时它只是一个空白屏幕。我究竟做错了什么? onDraw方法很好,因为当我这样做时它工作得很好:

public Game(Activity activ)
{
    activ.setContentView(this);
}

public void onDraw(Canvas canvas)
{
    board.draw(canvas);
}

但我之所以不能这样做的原因是因为平板电脑底部有一个按钮,后面的按钮和显示键盘按钮。当我这样做的时候,它会在那个条形图下绘制并切断图像。如果我这样做,那么Android设置布局的边界,以便它不在该栏下。我更喜欢使用xml布局,因为我认为当你使用xml布局而不是将自定义视图设置为内容视图时,Android的效果会更好。所有相关的答案都很贴心!

1 个答案:

答案 0 :(得分:0)

我认为你无法看到你的观点,因为你没有指定任何布局参数。 在调用addView方法之前尝试这个。

ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT,
        LayoutParams.FILL_PARENT);
layout.addView(this);

这样做的xml方式就是。 在xml文件中,您可以包含自定义视图,如

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/game_layout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">
    <com.yourpackage.Game android:layout_width="fill_parent"
        android:layout_height="fill_parent"/> 
</LinearLayout>