Android自定义视图onDraw

时间:2012-09-23 14:25:20

标签: android canvas view custom-controls

我正在尝试制作一个由另一个控件组成的控件。我尝试过很多方法,但似乎都没有用......你问为什么我需要那个? beauau

  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 个答案:

答案 0 :(得分:1)

  

控件是另一个控件的组合

您至少需要一个类似RelativeLayoutLinearLayout的布局,因为视图不能包含其他视图。您需要ViewGroup代替。

我不知道您想要放置它的位置和方式,但最简单的方法是简单地创建一个包含控件的xml文件,并像平常一样对它们进行样式化。

阴影颜色可以由android:shadowColor定义,以便为文字添加阴影。

使文本本身成为一个渐变可能会非常棘手。