指定列跨度和行跨度时 GridLayout 的工作原理
How GridLayout works when specifying the columnspan and rowspan
我在 Android 项目中为我的列表视图设计了布局。是这样的;
我已经阅读并研究了其他网格布局示例,并且根据我所获得的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 开发者博客
的示例
实现这个设计;
代码;
<?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 项目中为我的列表视图设计了布局。是这样的;
我已经阅读并研究了其他网格布局示例,并且根据我所获得的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 开发者博客
的示例实现这个设计;
代码;
<?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>
标签来实现您的设计。