如何在相对度量中指定Android GridLayout单元格的宽度和高度?

Nil*_*zor 40 android android-layout

我试图弄清楚GridLayout是如何工作的,但是我从文档中无法弄清楚的一件事是如何或者如果可以控制网格单元的大小.

假设我想要一个两个两个网格,其中每个单元格占据屏幕空间的25%(半高,半宽) - 我可以这样做吗?

使用LinearLayout,我可以通过在一个垂直中嵌套两个水平LinearLayout然后为所有元素指定权重 1来实现此目的.GridLayout虽然不支持weight属性.

Jac*_*ack 18

android有两个属性:layout_columnWeight和layout_rowWeight,它与LinearLayout中的layout_weight类似.这在API 21中受支持.对于较旧的Android设备,请使用v7支持库中的GridLayout.

这些属性允许您根据分配给每列的值调整列的宽度/高度.公式如下(column_weight/sum_of_column_weight)*gridLayout_width = column_width.

这是一个示例,它是一个2行2列均匀展开的网格视图,每个占用网格重量和高度的50%.

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="2"
>

    <TextView
        android:text="SEARCH FEE"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
     />

    <TextView
        android:layout_columnWeight="1"
        android:text="SEARCH FEE"
        android:layout_rowWeight="1"
     />

    <TextView
        android:text="SEARCH FEE"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        />

    <TextView
        android:layout_columnWeight="1"
        android:text="SEARCH FEE"
        android:layout_rowWeight="1"
        />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)

  • 此代码缺少单元格的 `android:layout_width="0dp"` 和 `android:layout_height="0dp"` (2认同)
  • 请注意,权重仅受API 21支持.但您可以使用支持库,使用:compile'c​​om.android.support:gridlayout-v7:24.0.0' (2认同)

Mat*_*lor 12

根据文档,它看起来像你想要的设置应该相当简单:

android:rowCount='2'
android:columnCount='2'
Run Code Online (Sandbox Code Playgroud)

在孩子们中

android:layout_columnSpan="1"
android:layout_rowSpan="1"
Run Code Online (Sandbox Code Playgroud)

参考文献还提到了拉伸:

要防止色谱柱拉伸,请确保色谱柱中的某个组分未定义重力.

这似乎是一种解决方案,可以保持行和列的比例为50:50,而无需根据内容调整大小

  • 现在尝试了layout_gravity ='fill'.没运气.LinearLayouts是解决方案.这个问题解释得很好:http://stackoverflow.com/questions/4961355/percentage-width-in-a-relativelayout (2认同)

ces*_*rds 8

它会是这样的:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:columnCount="2"
    app:rowCount="2">

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:gravity="center"
        android:text="1"
        app:layout_columnWeight="1"
        app:layout_rowWeight="1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:gravity="center"
        android:text="2"
        app:layout_columnWeight="1"
        app:layout_rowWeight="1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:gravity="center"
        android:text="3"
        app:layout_columnWeight="1"
        app:layout_rowWeight="1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:gravity="center"
        android:text="4"
        app:layout_columnWeight="1"
        app:layout_rowWeight="1" />

</android.support.v7.widget.GridLayout>
Run Code Online (Sandbox Code Playgroud)