2012-07-09 35 views
0

好,问题是我在我的活动中使用了一种SurfaceView,并且我想在其中添加按钮。添加一个按钮来活动没有任何布局

我的问题是:

1)我如何不调用findViewById(...)创建按钮的一个实例? (因为我没有布局,因为surfaceView)...

2)以及如何在画布上绘制此按钮?

或者你也许在暗示做别的事情?

所有我关心的是,将会有我的屏幕上的按钮,我可以实现类似OnClickListener(...)....

感谢所有提前!

回答

1

如果您在画布上绘制按钮(可能),它将不可点击。你真正想要的是:

  • 将你的SurfaceView包裹到一个框架布局 - 如果你还将其他视图添加到相同的布局,它们将出现在SurfaceView上方;
  • 将相对布局添加到上面提到的框架布局中(这样您可以定位按钮以及其他视图 - 如果只有按钮,则可能只需设置边距即可离开)。

像这样:

<?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> 
+0

我不知道我可以添加在XML布局 一个surfaceView,这将是对我非常有用,非常感谢你! – Leon 2012-07-09 20:57:38

7

,按钮与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) { 

      } 

     }); 
    } 
+0

tnx很多我是新的Android世界,它真的有助于更好地理解一些概念,所以谢谢! 但我会使用fdreger的答案,因为它适合我的代码更多 – Leon 2012-07-09 20:49:18

+0

@Leon:最受欢迎的朋友!!!! :) – 2012-07-09 20:51:21

相关问题