2012-09-23 196 views
0

我試圖使一個控件是另一個控件的組合。我嘗試了很多方法,但似乎沒有任何工作......你問爲什麼我需要這樣做? BecausedAndroid自定義視圖onDraw

  1. 我所面臨創建與 不同顏色的陰影和漸變前景的一個TextView是不可能的
  2. 我要讓 卷文字和它要通過這個自定義呈現控制

    public class MainMenuItem extends View { 
        private MainMenuItemHelper firstLayerItem; 
        private MainMenuItemHelper secondLayerItem; 
    
        ... 
        @Override 
        protected void onDraw(Canvas canvas) { 
         super.onDraw(canvas); 
         secondLayerItem.draw(canvas); 
         firstLayerItem.draw(canvas); 
        } 
    } 
    
    
    public class MainMenuItemHelper extends TextView { 
        private List<DrawCommand> commands; 
    
        ... 
        @Override 
        protected void onDraw(Canvas canvas) { 
         for (DrawCommand command : commands) { 
          command.draw(canvas, getPaint()); 
          super.onDraw(canvas); 
         } 
        } 
    } 
    
+1

確定你想在循環中調用'super.onDraw()'? – WarrenFaith

+0

我測試過的MainMenuHelper類在獨立模式下,它的工作原理 – OneMoreVladimir

+1

'works'並不意味着它是一個好主意:) – WarrenFaith

回答

1

是另一個控制的組合物的控制

您至少需要像RelativeLayoutLinearLayout這樣的佈局,因爲視圖不能包含其他視圖。您需要改爲ViewGroup

我不知道在哪裏以及如何你想放置它,但最簡單的方法是簡單地創建包含控件一個XML文件,他們的風格就像你通常會做。

陰影顏色可以通過android:shadowColor被定義爲有你的文字陰影。

使文本本身成爲一個漸變可能會非常棘手。

+0

謝謝!謝謝!!!謝謝!!!! 我已經殺了大約5個小時,試圖解決這個問題 和一個更多的時間 謝謝!謝謝!!!謝謝!!!! – OneMoreVladimir

相關問題