2010-10-09 113 views
2

是否有可能將視圖或派生(按鈕,textview,imageview等等)添加到另一個視圖而無需通過佈局?我有一個名爲ScreenView的類,它從View派生(例如,公共類ScreenView的擴展視圖)。 我想顯示文本,標籤,圖像等。將視圖添加到另一個視圖

在iPhone上它很平凡,只需創建我的對象並使用addSubview方法;你可以將任何UI對象嵌入到另一箇中。大多數UI工具包也是這樣工作的。

佈局問題是,我還沒有找到一個簡單的方法來正確定位一個子視圖(比如文本視圖)在封閉視圖的給定位置。我想要一個包含其他...

我希望我錯過了文檔中的東西(這遠非直觀的肯定),我可以做一些像myView.addView(子視圖)。但事實並非如此:)

作爲一個側面的問題,在Android世界中最接近iPhone的UILabel是什麼? UILabel可以包含文本或圖形。現在,我已經使用的TextView和ImageView的過,但他們沒有任何地方靈活,當涉及到佈局一個UILabel

編輯:讓從ViewGoup我查看繼承代替,讓我補充子視圖.. 然而,我想在我看來畫。我發現當ScreenView擴展ViewGroup時,onDraw函數永遠不會被調用。

喜歡的東西:

 @Override 
     protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 

      Paint paint = new Paint(); 
      paint.setStyle(Paint.Style.FILL); 

      // make the entire canvas yellow 
      paint.setColor(Color.YELLOW); 
      canvas.drawPaint(paint); 
} 

將以黃色我看來,如果油漆延伸屏幕視圖查看;但如果它擴展ViewGroup則不會。

如何直接在視圖中繪製呢?

感謝 JY

+0

看起來像ViewGroup類會做的伎倆.. – jyavenard 2010-10-09 08:49:22

回答

0

使我的類繼承而來的是RelativeLayout,它確實繪製了我的子視圖。 GroupView默認不繪製任何東西,並且onLayout需要被完全寫入。沒有關於這個問題的文件,這將是一件很難的事情。

onDraw默認不會被調用,如果您設置了背景顏色或添加了任何可繪製項目,它會被調用。

否則,您需要在dispatchDraw中進行繪製。

2

使用ViewGroup中,這就是他們是什麼。然後你可以調用addView():)

+0

是的,我看到後不久,我發佈.. – jyavenard 2010-10-10 01:07:36

+0

但是,我發現onDraw不與它調用。當我的類繼承View類 – jyavenard 2010-10-10 01:08:10

+1

ViewGroups默認不繪製時,肯定會調用它,你必須在某處調用setWillNotDraw(false)。你也可以使用dispatchDraw()。 – 2010-10-10 16:27:43

相關問題