如何在删除视图时阻止 GridLayout 向上推
How to stop GridLayout from pushing things up when a view is removed
所以我有 GridLayout(添加 View
时我不会弄乱参数),每当我删除直接位于布局内部的 View
时,它只会删除它并推动一切向前发展,所以当我尝试添加另一个 View
时,它会附加它,而不是将它添加到我想要的地方。
即:
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
我想去掉1,加2,现在是
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 2
有没有办法阻止这种情况发生?
addview 始终将新元素放在 ViewGroup 的末尾。
您可以首先以编程方式将 mxn RelativeLatouts(或另一个 ViewGroup)添加到 GridLayout,然后从这些布局中移除 GridLayout
使用addView(View child, int index),并传递新视图和索引。
您如何删除子视图?一种选择是这样的:
int index= yourIndex;
View newChild = (View) findViewById(R.id.childTwo);
GridLayout parent = (GridLayout) findViewById(R.id.parentId;
View child = (View) parent.getChildAt(index);
child.setVisibility(View.INVISIBLE);
parent.addView(newChild, index);
parent.removeView(child);
这样做会将您的占位符保留在您希望新 View
占据的 GridLayout 单元格中,但这只有在您在删除现有 View
后立即添加新 View
时才有效或者如果您不介意在您的 GridLayout 中有一个看起来 "empty" 的单元格,直到您向其中添加新的 View
的任何时间点。
我还没有测试过这个确切的代码块,但我在我的一个项目中做了一个非常相似的操作,所以希望这对你有用。
所以我有 GridLayout(添加 View
时我不会弄乱参数),每当我删除直接位于布局内部的 View
时,它只会删除它并推动一切向前发展,所以当我尝试添加另一个 View
时,它会附加它,而不是将它添加到我想要的地方。
即:
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
我想去掉1,加2,现在是
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 2
有没有办法阻止这种情况发生?
addview 始终将新元素放在 ViewGroup 的末尾。
您可以首先以编程方式将 mxn RelativeLatouts(或另一个 ViewGroup)添加到 GridLayout,然后从这些布局中移除 GridLayout
使用addView(View child, int index),并传递新视图和索引。
您如何删除子视图?一种选择是这样的:
int index= yourIndex;
View newChild = (View) findViewById(R.id.childTwo);
GridLayout parent = (GridLayout) findViewById(R.id.parentId;
View child = (View) parent.getChildAt(index);
child.setVisibility(View.INVISIBLE);
parent.addView(newChild, index);
parent.removeView(child);
这样做会将您的占位符保留在您希望新 View
占据的 GridLayout 单元格中,但这只有在您在删除现有 View
后立即添加新 View
时才有效或者如果您不介意在您的 GridLayout 中有一个看起来 "empty" 的单元格,直到您向其中添加新的 View
的任何时间点。
我还没有测试过这个确切的代码块,但我在我的一个项目中做了一个非常相似的操作,所以希望这对你有用。