android - 指定列跨度和行跨度时 GridLayout 的工作原理

标签 android xml android-gridlayout

我在一个 Android 项目中为我的 ListView 做了一个布局设计。是这样的;

enter image description here

我已经阅读和研究了其他 gridlayout 示例,并根据我所获得的编写了这个 xml。

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/card_background"
    android:columnCount="30"
    android:orientation="horizontal"
    android:rowCount="6"
    android:id="@+id/grid_layout_notification">

    <com.ei.dizitakip.android.CircledNetworkImageView
        android:id="@+id/fancy_notification_thumbnail"
        android:layout_columnSpan="5"
        android:layout_rowSpan="6"
        />

    <TextView
        android:layout_columnSpan="25"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/fancy_title"
        android:textColor="@color/color_primary_dark" />

    <ImageView
        android:layout_columnSpan="2"
        android:id="@+id/fancy_season_icon"
        android:src="@mipmap/season_icon"
        android:background="@android:color/transparent"
         />

    <TextView
        android:layout_columnSpan="10"
        android:id="@+id/fancy_status_text"
        android:gravity="center_vertical" />

    <ImageView
        android:layout_columnSpan="2"
        android:id="@+id/fancy_domain_icon"
        android:src="@mipmap/www_icon"
        android:background="@android:color/transparent"
        />

    <TextView
        android:layout_columnSpan="11"
        android:id="@+id/fancy_domain_text"
        android:gravity="center_vertical" />

</GridLayout>

如您所见,代码与设计相去甚远。我对 GridLayouts 缺少什么?这是我第一次使用它,我使用了与 LinearLayout 的 layout_weight 相同的方法。非常感谢任何代码示例、方法或技术。

最佳答案

您应该使用 android:layout_gravity 来指定网格的大小。这是来自 Android 开发者博客的示例

为了实现这个设计;

enter image description here

代码;

<?xml version="1.0" encoding="utf-8"?>
<GridLayout
        xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:useDefaultMargins="true"
        android:alignmentMode="alignBounds"
        android:columnOrderPreserved="false"

        android:columnCount="4"
        >

    <TextView
            android:text="Email setup"
            android:textSize="32dip"

            android:layout_columnSpan="4"
            android:layout_gravity="center_horizontal"
            />

    <TextView
            android:text="You can configure email in just a few steps:"
            android:textSize="16dip"

            android:layout_columnSpan="4"
            android:layout_gravity="left"
            />

    <TextView
            android:text="Email address:"

            android:layout_gravity="right"
            />

    <EditText
            android:ems="10"
            />

    <TextView
            android:text="Password:"

            android:layout_column="0"
            android:layout_gravity="right"
            />

    <EditText
            android:ems="8"
            />

    <Space
            android:layout_row="4"
            android:layout_column="0"
            android:layout_columnSpan="3"
            android:layout_gravity="fill"
            />

    <Button
            android:text="Next"

            android:layout_row="5"
            android:layout_column="3"
            />
</GridLayout>

您需要使用 <Space>标记以及实现您的设计。

关于android - 指定列跨度和行跨度时 GridLayout 的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720285/

相关文章:

android - 如何直接打开图库应用挑选图片

android - 通知设置 channel 和 FCM subscribeToTopic 有什么不同?

java - 正如我可以在一个类中关联两个不同的文件与 jaxb

java - 如何在 App Engine 中安排 cron 作业?

android - GridLayout LayoutParams - 以编程方式应用权重和跨度

java - 将 JavaFX2 导出到 Android

java - fragment 刷新

c# - 从代码编写 visual studio 项目

android - 使用 .xml 文件以编程方式生成相同的布局

android - GridLayout(不是GridView)如何均匀拉伸(stretch)所有 child