2011-08-13 62 views
11

如何在自定義視圖中在畫布上繪製按鈕? (最好在中右側)在做button.draw(canvas)之前,我有什麼需要調用的東西嗎?安卓繪圖按鈕用於自定義視圖畫布?

public class MyClass extends View { 
    public Simulation(Context context) { 
      super(context); 
      pauseButton.setText("TestButton"); 
      pauseButton.setClickable(true); 
      pauseButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
      Log.i(TAG, "Button Pressed!"); 
      } 
      }); 
    public onDraw(Canvas canvas) { 
      super.onDraw(canvas); 
      pauseButton.draw(canvas); 
    } 
    } 

感謝您的時間

+0

super.onDraw(canvas); – confucius

+0

'super.onDraw(canvas);'沒有解決問題? @Nammari – unknownone

+0

目前情況如何。它是在畫嗎?或在錯誤的地方畫畫? – Ronnie

回答

14

您不能插入一個按鈕到畫布上。畫布是位圖的接口或視圖的位圖緩衝區。您只能在其中繪製其他位圖或像素,而不能插入對象或小部件。

有一些解決方案:

  1. 爲尼古拉建議,使用的FrameLayout並創建兩個層(視圖),第一您的自定義視圖和第二LinerView或RelativeView,這會在上面,在這裏你可以有按鈕等

  2. 在畫布上繪製一個buttun的圖像,然後使用的onTouchEvent把定製的視圖和測試觸摸的座標,然後做一些事情......爲的onTouchEvent這個範例:Make certain area of bitmap transparent on touch

+0

如何將我的自定義視圖添加到xml文件?感謝您的回答 – unknownone

+1

這是一個很長的故事,您必須搜索示例...但基本上您可以在xml中創建一個新的標籤,如 ....,並且然後創建一個名爲MyView的新類,它具有一個構造函數MyView(Context context,AttributeSet attrs){super(context,attrs); ....}在這個例子中,只需添加我提到的構造函數:http://stackoverflow.com/questions/6308106/view-inflation-and-custom-views – Lumis

+0

好的,謝謝一堆! – unknownone

4

爲什麼你需要自己繪製按鈕?使用FrameLayout,只需在自定義視圖上覆蓋按鈕。

-1

試試這個

public onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.save(); 
     pauseButton.draw(canvas); 
     canvas.restore(); 
}