在我的MainActivity中,我想处理我的按钮,在我的GameSurfaceView中我想处理绘图的东西,但我看不到我的GameSurfaceView上的按钮为什么会这样? 我的Gameloop类处理onDraw调用。 当我将ContentView设置为我的MainActivity时,我看不到我的绘图,当我将ContentView设置为我的GameSurfaceView时,我看到了图纸,但我看不到我的按钮。
如何将GameSufaceView实现到我的MainActivity?请帮我。 这是我的代码的简短形式:
这是我的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的 [编辑]
经过一天的搜索,我发现了一个与我类似的问题:
[How to use my SurfaceView with main.xml on Android? 但我仍然看不到我在MainActivity上定义的按钮,我只看到黑屏和我正在绘制的矩形: 我将此添加到我的MainActivity 我仍然无法看到我定义的按钮,为什么会这样?有人能帮助我吗?<?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>
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"
/>
答案 0 :(得分:1)
我终于解决了我的问题。
我需要在xml文件中定义Button bevore gameSurfaceView,否则gameSurfaceView是&#34; over&#34;按钮,这就是我无法看到它的原因。