是否可以以编程方式从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>
答案 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}}