gpt4 book ai didi

java - 如何处理 Activity 中的自定义 View 类?

转载 作者:行者123 更新时间:2023-12-01 13:36:22 24 4
gpt4 key购买 nike

我制作了一个自定义 View ,我称之为 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);

我将名为 Game.java 的自定义 View 类作为屏幕的一部分

但是我该如何解决这个问题呢?如果我这样做:

Game game;
game =(Game) findViewById(R.id.game);
game.shot();

它崩溃了。

当然,我能做到:

 Game game=new Game(this)
setContentView(game);

并且可以访问游戏,这样它就不会崩溃,但我还需要屏幕上的其他元素

请告诉我正确的做法

最佳答案

您可以在 xml 中使用 RelativeLayoutLinearLayout 并将其放置在您想要的任何位置。您还可以在 xml 中拥有其他 View 。这是一种方法

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

但是您的布局中有自定义 View 。您缺少 GameView 中的构造函数。你的方法也应该有效

阅读第 4 章通过 Retro Meier Professional Android Devleopment 创建用户界面

关于java - 如何处理 Activity 中的自定义 View 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21238448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com