我有一个ListView
,其中每一行都是一个GridLayout
有两行的。我希望每个列表项至少有 48dp 高(推荐的新闻目标最小尺寸),因为每个都可以被按下,GridLayout
如果它不展开它,我希望它在行中垂直居中。
为此,我将GridLayout
a 放入内部FrameLayout
,将 设置FrameLayout
为 48dp 的最小高度,并将 设置layout_gravity
为GridLayout
居中。如果我不使用FrameLayout
并且只设置 的最小高度,那么由于' 的虚假空间分布GridLayout
,我无法将整个东西很好地垂直居中。GridLayout
因此,使用FrameLayout
给了我想要的结果,但在我的 XML 文件中生成了一个 Lint 警告,“这个 GridLayout 布局或其 FrameLayout 父级是无用的。” 显然它不是没用的,因为它排列正确,但是有没有更好的方法来做到这一点,我错过了?
这是我的 XML(我在 GridLayout 中删除了一堆 TextView,因为它们与这种情况无关):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="48dp"
>
<GridLayout
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:rowCount="2"
android:useDefaultMargins="true"
>
<TextView android:id="@+id/number"
android:layout_gravity="center_vertical"
android:layout_marginLeft="2dp"
android:layout_rowSpan="2"
android:minEms="1"
/>
<TextView android:id="@+id/a"
android:layout_gravity="center_vertical"
android:layout_rowSpan="2"
android:minEms="2"
/>
<TextView android:id="@+id/b"
android:layout_marginBottom="0dp"
android:minEms="3"
/>
<TextView android:id="@+id/c"
android:layout_marginTop="0dp"
android:minEms="3"
/>
...
</GridLayout>
</FrameLayout>