以编程方式从GridLayout中删除一行?

时间:2017-01-19 22:13:05

标签: android android-layout

是否可以以编程方式从GridLayout中删除一行?
下面的布局包括3行(电话,手机,电子邮件)。 在代码中,它可以确定是否没有手机号码。如果没有,那么我根本不想显示第二行。

<?xml version="1.0" encoding="utf-8"?>

<GridLayout xmlns:mapbox="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/individual_gridlayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:alignmentMode="alignBounds"
    android:columnCount="4"
    android:columnOrderPreserved="false"
    android:rowCount="3">


    <ImageButton
        android:id="@+id/phone_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_row="0"
        android:background="@null"
        android:src="@drawable/ic_phone_enabled" />

    <ImageButton
        android:id="@+id/voip_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="2"
        android:layout_row="0"
        android:background="@null"
        android:src="@drawable/ic_voip_enabled" />

    <TextView
        android:id="@+id/phone_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="3"
        android:layout_margin="10dp"
        android:layout_row="0"
        android:text="My Phone number"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_small"
        tools:text="phone" />


    <ImageButton
        android:id="@+id/message_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_row="1"
        android:background="@null"
        android:src="@drawable/ic_textsms_enabled" />

    <ImageButton
        android:id="@+id/cell_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_row="1"
        android:background="@null"
        android:src="@drawable/ic_phone_enabled" />

    <ImageButton
        android:id="@+id/voip2_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="2"
        android:layout_row="1"
        android:background="@null"
        android:src="@drawable/ic_voip_enabled" />

    <TextView
        android:id="@+id/cell_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="3"
        android:layout_margin="10dp"
        android:layout_row="1"
        android:text="My Cell number"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_small"
        tools:text="phone" />

    <ImageButton
        android:id="@+id/email_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_row="2"
        android:background="@null"
        android:src="@drawable/ic_email_enabled" />

    <TextView
        android:id="@+id/email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_columnSpan="3"
        android:layout_margin="10dp"
        android:layout_row="2"
        android:text="someone@state.nm.us"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_small"
        tools:text="email" />

</GridLayout>

2 个答案:

答案 0 :(得分:1)

网格布局适用于单元格,而不适用于行,它使您能够更改列的数量。 使用类似以下的方法来删除不需要的单元格会更合适:

GridLayout grid = findViewById(R.id.grid);
Button btnInGrid = findViewById(R.id.someButtonInsideTheGrid);
grid.removeView(btnInGrid);

答案 1 :(得分:-1)

有很多方法可以解决这个问题。我最终做的是创建另一个没有问题行的布局文件,然后根据某些条件选择合适的布局。然后在代码中你还必须使用这个条件来围绕可能不存在的组件跳舞。

<GridLayout xmlns:mapbox="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/individual_gridlayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:alignmentMode="alignBounds"
    android:columnCount="4"
    android:columnOrderPreserved="false"
    android:rowCount="2">


    <ImageButton
        android:id="@+id/phone_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_row="0"
        android:background="@null"
        android:src="@drawable/ic_phone_enabled" />

    <ImageButton
        android:id="@+id/voip_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="2"
        android:layout_row="0"
        android:background="@null"
        android:src="@drawable/ic_voip_enabled" />

    <TextView
        android:id="@+id/phone_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="3"
        android:layout_margin="10dp"
        android:layout_row="0"
        android:text="My Phone number"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_small"
        tools:text="phone" />

    <ImageButton
        android:id="@+id/email_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_row="1"
        android:background="@null"
        android:src="@drawable/ic_email_enabled" />

    <TextView
        android:id="@+id/email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_columnSpan="3"
        android:layout_margin="10dp"
        android:layout_row="1"
        android:text="someone@state.nm.us"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_small"
        tools:text="email" />

</GridLayout>

mylayout_no_cell.xml

{{1}}