我制作了一个自定义视图,我称之为Game.java
public class Game extends View {
public Game(Context context, AttributeSet attrs) {
//here goes class
public void shot(){
}
//method I want to use sometime
}
这是我的Activity game.xml布局文件的一部分:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".GameActivity" >
<com.vladdrummer.textmaster.Game
android:id="@+id/game"
android:layout_width="wrap_content"
android:windowSoftInputMode="adjustResize"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<View
android:id="@+id/spareview"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
等。 所以,在Activity中我只是做
setContentView(R.layout.game);
我将自定义的View类叫做Game.java作为屏幕的一部分
但我该如何解决呢?如果我这样做:
Game game;
game =(Game) findViewById(R.id.game);
game.shot();
它崩溃了。
当然,我可以这样做:
Game game=new Game(this)
setContentView(game);
并且可以访问游戏,因此它不会崩溃,但我也需要屏幕上的其他元素
请告诉我如何正确行事
答案 0 :(得分:1)
您可以在xml中添加RelativeLayout
或LinearLayout
并将其放置在任意位置。您也可以在xml中拥有其他视图。这是一种方式
setContentView(R.layout.yourlayout); // infalte layout
RelativeLayout rl =(RelativeLayout) findViewById(R.id.relativeLayout);// initialize
Game game=new Game(this);
rl.addView(game); // ad view to container
但是您的布局中有自定义视图。您在GameView
中缺少构造函数。你的方法也应该工作
阅读第4章通过Retro Meier Professional Android Devleopment创建用户界面