2010-08-17 95 views
1

我想構建自己的自定義視圖,應該看起來像Crysis-GUI。自定義視圖擴展視圖類但仍然基於XML佈局

起初,我設計了一個基於XML的佈局,並通過setContentView(int resid)-Method使其可見。工作得很好。

但現在我不想更進一步,並在我的佈局繪製。所以我創建了一個新類,讓它擴展View並覆蓋onDraw()方法。到現在爲止還挺好。按預期工作

public class RifleView extends View { 

public RifleView(Context context) { 
    super(context); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    Paint p = new Paint(); 
    p.setARGB(255, 255, 0, 0); 
    canvas.drawText("Hello World", 20, 20, p); 
} 

}

但我怎麼能繼續使用我的XML佈局?我不能再做setContentView,那麼如何實現相同的效果呢?

回答

2

爲什麼你不能使用setContentView?只是做一個這樣的XML標籤:<com.mycompany.mypackage.myComponent ... xml attributes an tags </com.mycompany.mypackage.myComponent>

+0

但我不想在我的RifleView中使用setContentView有我的基於XML的佈局。然後,我不想通過onDraw()來繪製它 - 方法 – Alien 2010-08-17 15:14:04

+0

你不是說你的rifleView有孩子嗎?這是一個視圖...如果你想要它有孩子,你必須擴展ViewGroup – fedj 2010-08-17 15:17:00

+0

這是makse的意義,但爲什麼我的onDraw() - 方法不被調用? – Alien 2010-08-17 15:29:38