Android:交换2个视图的位置
在我的TableLayout上,一个TableRow有一个TextView,另一个有一个微调器。当用户选中复选框时,我想交换这两个视图的位置。微调器需要移动到TextView的位置,TextView需要移动到微调器的位置 动画并不重要。首选的是它会立即发生,但如果必要的话,我可以制作一个超快速的动画 我感到惊讶的是,我在寻找这个问题的解决方案时遇到了这么多麻烦:/类似地,Android dev ref可以在MSDN库中使用一些简单的示例Android:交换2个视图的位置,android,android-layout,android-widget,Android,Android Layout,Android Widget,在我的TableLayout上,一个TableRow有一个TextView,另一个有一个微调器。当用户选中复选框时,我想交换这两个视图的位置。微调器需要移动到TextView的位置,TextView需要移动到微调器的位置 动画并不重要。首选的是它会立即发生,但如果必要的话,我可以制作一个超快速的动画 我感到惊讶的是,我在寻找这个问题的解决方案时遇到了这么多麻烦:/类似地,Android dev ref可以在MSDN库中使用一些简单的示例 谢谢 您可以尝试删除第一个TextView,然后使用add
谢谢 您可以尝试删除第一个TextView,然后使用addView将其添加回线性布局的末尾
TextView tv = (TextView)layout.getChildAt(0);
layout.removeView(tv);
layout.addView(tv);
这不是一个真正干净的代码,但我认为这可能有用:)以下是我用来交换视图的代码:
import android.widget.TableRow;
TableRow trI = (TableRow) findViewById(R.id.tr_input_row);
TableRow trO = (TableRow) findViewById(R.id.tr_output_row);
View v1 = (View) findViewById(R.id.View1);
View v2 = (View) findViewById(R.id.View2);
if (isInput()) {
trO.removeView(v1);
trI.removeView(v2);
trO.addView(v2);
trI.addView(v1);
} else {
trO.removeView(v2);
trI.removeView(v1);
trO.addView(v1);
trI.addView(v2);
}
在我的例子中,视图位于TableLayout的两个不同行中。我使用TableRow是因为它是我要交换的视图的父视图的类型。我假设可以将其更新为目标视图具有的任何类型的父视图。Nice。我在周五下班前就开始实现这个方法,但还没有机会测试它。我不认为这是一个不干净的代码。与Windows应用程序表单相比,这些Android表单更类似于HTML表单。在我发布了这个问题之后,我突然想到,我应该更像HTMLDOM,而不是放在画布上(x,y)位置的项目。要在HTMLDOM中移动项目,必须删除并重新添加它们