我正在尝试编写一个日历应用程序,并且我计划有一个网格(周视图),这可能是TableLayout
,并且直接在其上我必须绝对地将事件放在网格上。< / p>
但不推荐使用AbsoluteLayout
。我该怎么用?
事件可能重叠,我认为尝试使用非绝对布局来实现我想要的东西真的很傻。
也许我应该在每个子节点上使用RelativeLayout
左边距和边距顶部。看起来很奇怪这样做,可能效率不高。这是最好的方式还是有替代方案?
答案 0 :(得分:1)
但不推荐使用AbsoluteLayout。我该怎么用?
编写自己的布局管理器,实现所需的规则。
答案 1 :(得分:1)
我发现您可以通过将子视图添加到RelativeLayout
来重新创建绝对定位,并将RelativeLayout.LayoutParams
设置为除了width,height,marginTop和marginLeft之外只有默认值。顶部和左边距与AbsoluteLayout
中的顶部和左边相似。此外,支持负边距。
确保考虑屏幕密度和宽度以及方向更改以及用于AbsoluteLayout
的绝对定位的所有其他警告
如果您在将内容溢出屏幕右边缘时遇到问题,请尝试使用同样负的右边距补充正左边距。 (original question)
答案 2 :(得分:0)
我建议你采取简单的方法:
或者努力但更加稳定/快速/可定制的方式:
数字1的问题在于,您在视图中添加元素的次数越多,您的应用就越会受到性能影响。说一个常规的月份,你每天有3个约会,你的层次结构将被填充一百个视图,这将是非常长的渲染和沉重的记忆。
数字2的问题:首先编码起来要困难得多。如果你必须编写自己的布局管理器,请不要使用surfaceview或openGL。