问题是我在我的活动中使用了一种SurfaceView,我想在其中添加按钮。
我的问题是:
1)如何在不调用findViewById(...)的情况下创建按钮实例? (因为SurfaceView因为我没有布局)...
2)我如何在画布上绘制这个按钮?
或者你建议做别的事情?
所有我关心的是我的屏幕上会有按钮,我可以实现像OnClickListener(...)....
先谢谢!
答案 0 :(得分:8)
使用setOnClickListener
添加为活动按钮而不使用xml:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Button button= new Button (this);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT);
params.topMargin = 0;
params.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
button.setText("dynamic Button");
addContentView(tv, params);
// setContentView(tv);
button.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
}
});
}
答案 1 :(得分:1)
如果您在画布上绘制按钮(可能),则无法点击。你真正想要的是:
像这样:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FrameLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/restartButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:onClick="whatever"
android:text="look, I float above the SurfaceView!" />
</RelativeLayout>
</FrameLayout>