首页 > 解决方案 > 动态填充网格布局

问题描述

我试图在我的应用程序中动态设计一个菜单gridLayout。我所做的设计可以用下一个布局填充被删除的布局。

以前我曾经gridView克服过这个问题,但是如果它由内存不足的设备处理,则过程会很慢。从而导致进入主菜单时出现空白。

当我用 a 创建它时gridLayout,我尝试在同一行中隐藏一个项目。我希望输出是白色空白可以用下一个布局填充,但是如果布局被隐藏,则会出现空白白色是同一行中的布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.handoko.gridlayoutexample.MainActivity">

  <GridLayout
      android:id="@+id/mainGrid"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:alignmentMode="alignMargins"
      android:columnCount="2"
      android:columnOrderPreserved="false"
      android:padding="14dp">

    <!-- Row 1 -->

    <!-- Column 1 -->
    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Me"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <!-- Column 2 -->
    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Family"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>


    <!-- Row 2 -->

    <!-- Column 1 -->
    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Lovely"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <!-- Column 2 -->
    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        android:visibility="gone"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Team"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>


    <!-- Row 2 -->

    <!-- Column 1 -->
    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Friends"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <!-- Column 2 -->
    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Calendars"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Calendars"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Calendars"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Calendars"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Calendars"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        android:visibility="gone"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Calendars"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_rowWeight="1"
        android:visibility="gone"
        app:cardCornerRadius="8dp"
        app:cardElevation="8dp">

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal|center_vertical"
          android:layout_margin="16dp"
          android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Calendars"
            android:textAlignment="center"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold" />

      </LinearLayout>

    </android.support.v7.widget.CardView>

  </GridLayout>

</RelativeLayout>

在此处输入图像描述

标签: javaandroid

解决方案


推荐阅读