我有一个名为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的效果会更好。所有相关的答案都很贴心!
答案 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>