我有一个ListView
,其中每一行都是GridLayout
,有两行。我希望每个列表项至少高48dp(建议的最小压力目标大小),因为每个列表项都可以按下,如果它不展开,我希望GridLayout
在行中垂直居中。< / p>
为此,我将GridLayout
放在FrameLayout
内,将FrameLayout
设置为最小高度48dp,并设置layout_gravity
{ {1}}居中。如果我不使用GridLayout
并且只设置FrameLayout
的最小高度,那么由于GridLayout
的虚假空间分布,我无法将整个事物完全垂直居中
因此,使用GridLayout
可以获得所需的结果,但在我的XML文件中生成Lint警告,“此GridLayout布局或其FrameLayout父级是无用的。”显然它没有用,因为它排列正确,但有没有更好的方法去做我错过的?
这是我的XML(我在GridLayout中删除了一堆TextView,因为它们与这种情况无关):
FrameLayout
答案 0 :(得分:0)
除非你看到性能问题,否则我会保持这种状态。如果你看到一个性能问题,而且它是因为附加的FrameLayout(如果你直接使用GridLayout就可以告诉你,如果问题消失了),那么(只有这样)我会尝试直接修复GridLayout。
如果是这种情况,那么我所知道的是GridLayout根据灵活性的原则分配了多余的空间。如果这个原则不足以消除歧义,那么你会看到它为最右边的列和底行提供多余空间的行为。我尝试使用row / col属性来确保它了解如何均匀分布。您可以通过设置GridLayout的子项的 gravity 来控制它,在您的情况下是TextViews。尝试将它们设置为“居中”,看看是否有帮助。如果没有,请访问:
http://developer.android.com/reference/android/widget/GridLayout.html