在自定义曲面视图中绘图时在主活动中创建按钮



在我的主活动中,我想处理我的按钮,在我的游戏表面视图中,我想处理绘图内容,但我看不到我的游戏表面视图上的按钮,为什么会这样?我的游戏循环类处理 onDraw 调用。当我将 ContentView 设置为 MainActivity 时,我看不到我的绘图;当我将 ContentView 设置为我的 GameSurfaceView 时,我看到了绘图,但看不到我的按钮。

如何将 GameSufaceView 实现到我的主活动中?请帮助我。这是我的代码的缩写形式:

这是我的主要活动[编辑:我缩短了摘录]

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));
    }
}

这是我的自定义表面视图

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);
}

这是来自主活动的 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>

[编辑]经过一天的搜索,我发现了一个与我类似的问题:[如何在Android上使用我的SurfaceView与main.xml?

但是我仍然看不到我在 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将"超过"按钮,这就是我看不到它的原因。

最新更新