在相邻布局内均匀间隔视图

时间:2011-10-10 13:55:42

标签: android android-layout

我正在研究游戏的控件,并且需要控制面板的一部分(下图中的灰色)动态更改,要么显示单个画布(左侧),要么显示5个按钮(右侧)。下排视图之间的边框应始终位于与上排按钮之间的边框完全相同的x位置,如图所示。同时,所有十二个上部按钮应按比例缩放并均匀分布。

Layout including canvas (left) and buttons (right)

我已经考虑了几种方法,但至今没有做任何我想做的事情:

  • 使用两个LinearLayouts,每行控件一个:可靠地对齐边框似乎是不可能的,并且最多替换部分布局很困难。
  • 再次使用TableLayout:替换部分布局很困难。
  • 使用RelativeLayout:似乎不可能独立于屏幕尺寸调整大小和对齐按钮

对替代方法或如何使上述方法之一起作用的任何建议?如果有某种方法可以动画视图的变化,例如在画布左侧从按钮中滑动,那也很好。谢谢!

2 个答案:

答案 0 :(得分:0)

有趣的是,几周前我已经这样做了。我所做的是利用View对象的这个属性:"Visibility"。这意味着在固定位置,我可以设置要显示的任何View,而不是取决于任何类型的Layout,它可以是Visibility.GONEVisibility.VISIBLE或{ {1}}。

在我的应用中,我使用Visibility.INVISIBLE设置右侧RelativeLayout的相对位置。 试一试:)

答案 1 :(得分:0)

为了结束这个问题:我通过编写一个自定义布局类来解决问题,该布局类放置子视图并调整其大小,而不考虑子项的测量大小。实际上,这给了我带有布局权重的线性布局的行为,但是边界放置更具确定性。

ViewAnimator用于在Canvas和Buttons之间切换。