gpt4 book ai didi

java - 在自定义 surfaceView 中绘制时在主要 Activity 中创建按钮

转载 作者:行者123 更新时间:2023-11-30 01:34:31 25 4
gpt4 key购买 nike

在我的 MainActivity 中,我想处理我的按钮,在我的 GameSurfaceView 中,我想处理绘图内容,但我在 GameSurfaceView 上看不到按钮,这是为什么?我的 Gameloop 类处理 onDraw 调用。当我将我的 ContentView 设置为我的 MainActivity 时,我看不到我的绘图,当我将 ContentView 设置为我的 GameSurfaceView 时,我看到了绘图但看不到我的按钮。

如何在我的 MainActivity 中实现 GameSufaceView?请帮我。这是我的代码的简短形式:

这是我的 MainActivity[编辑:我缩短了摘录]

public class MainActivity extends AppCompatActivity {

private Button button1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button1 = (Button) findViewById(R.id.btn1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});

setContentView(new GameSurfaceView(this));
}
}

这是我的自定义 SurfaceView

public class GameSurfaceView extends SurfaceView implements SurfaceHolder.Callback{

private Context context;

public GameSurfaceView(Context context){
super(context);
getHolder().addCallback(this);
this.context = context;
setFocusable(true);
}

@Override
public void onDraw(Canvas canvas){
canvas.drawRect(60, 60, 100, 100, p);
}

这是来自 MainActivity 的 xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:screenOrientation="landscape"
android:orientation="horizontal"
>

<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn1"
android:layout_gravity="center_vertical" />
</LinearLayout>

[编辑]经过一天的搜索,我发现了一个与我类似的问题:[ How to use my SurfaceView with main.xml on Android?

但我仍然看不到我在 MainActivity 上定义的按钮,我只看到黑屏和我正在绘制的矩形:

我将其添加到我的 MainActivity gameSurfaceView = (GameSurfaceView) findViewById(R.id.gameSurfaceView); 并删除了 setContentView(new GameSurfaceView(this));我将这段代码添加到我的 xml 文件中:

<com.example.joschi.tryout.GameSurfaceView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/gameSurfaceView"
/>

我仍然看不到我定义的按钮,这是为什么?有人可以帮助我吗?

最佳答案

我终于解决了我的问题。

我需要在 xml 文件中定义 gameSurfaceView 之前的按钮,否则 gameSurfaceView 会“超过”按钮,这就是我看不到它的原因。

关于java - 在自定义 surfaceView 中绘制时在主要 Activity 中创建按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274655/

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