2012-09-23 120 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

相关问题