Java 在android中实现自定义视图

Java 在android中实现自定义视图,java,android,Java,Android,我已经在安卓系统上工作了一段时间,但最近出现了一些新的东西。 我应该做一个日历。有一个默认的CalendarView视图,但是它与我的客户想要的日历有很大的不同 现在我开始在互联网上学习“创建自定义视图”教程 我发现要么我可以扩展现有的东西,要么我可以扩展视图 我扩展了视野。我的动机是从基础开始,即绘制代表一个月中几天的按钮网格,单击该按钮,用户将被导航到不同的页面 这就是我走到尽头的地方。我知道onDraw用于创建视图的视觉效果。但是,我们必须使用Canvas类。如何将android.widg

我已经在安卓系统上工作了一段时间,但最近出现了一些新的东西。 我应该做一个日历。有一个默认的CalendarView视图,但是它与我的客户想要的日历有很大的不同

现在我开始在互联网上学习“创建自定义视图”教程

我发现要么我可以扩展现有的东西,要么我可以扩展视图

我扩展了视野。我的动机是从基础开始,即绘制代表一个月中几天的按钮网格,单击该按钮,用户将被导航到不同的页面

这就是我走到尽头的地方。我知道onDraw用于创建视图的视觉效果。但是,我们必须使用Canvas类。如何将android.widget.Button作为onDraw方法布局的一部分

还是我完全涂了胭脂,走错了路

请帮帮我。谢谢

您应该创建自定义,如果是日历,我建议您使用子类。 手动将天数网格绘制到画布上可能更容易

GridView将更容易开始,但canvas将为您提供更丰富的可能性

如果您选择GridView,您应该创建一个适配器,每天一个。 如果选择Canvas,基本上应该在两个嵌套的循环中绘制项目,外部行用于循环,内部行用于循环。你可以直接在画布上绘制文本,形状,基本上就是一切。
另一方面,使用标准的android视图将允许您以更简单的方式集成触摸事件或例如动画。仅使用画布进行此类操作要复杂得多。

您可以使用
addView(button)
在cusotmview中添加按钮、文本视图或任何您想要的小部件。您不应该添加按钮,而应该在那里绘制按钮(矩形或任何合适的形状),并检查触摸事件是否在该按钮的范围内。。这将是我为更好的用户所采取的方法experience@Raghunandan很遗憾,canvas不包含名为addView的方法。viewgroup确实有addView。您可以将视图组(如
RelativeLayout
和addview)扩展到同一视图组。您可以手动将视图绘制到画布。但这没有意义,Android为您完成。谢谢。是的,我想如果我使用canvas,我必须手动找出用户按下的网格区域,以正确识别该框中的相关日期。我必须记录日期,以及它们在盒子里的位置。这听起来既可行又复杂。另一方面,GridView是的。我想我应该这样做。我甚至需要对GridView进行子类化吗。我想我可以在网格的一个单元格中本地放置一个按钮。