2012-07-09 54 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

相關問題