在我的TableLayout上,一个TableRow有一个TextView,另一个有一个Spinner。当用户选中复选框时,我想交换这两个视图的位置。 Spinner需要移动到TextView的位置,TextView需要移动到Spinner的位置。
动画并不重要。偏好是它会立即发生,但如果有必要,我可以使它成为超快动画。
我一直惊讶于我试图找到解决这个问题的方法有多少麻烦:/在类似的说明中,Android dev ref可以真正使用一些简单的例子和MSDN库。
谢谢!
答案 0 :(得分:4)
您可以尝试删除第一个TextView,然后使用addView将其添加回线性布局的末尾。
TextView tv = (TextView)layout.getChildAt(0);
layout.removeView(tv);
layout.addView(tv);
这不是一个非常干净的代码,但我可能会工作:)
答案 1 :(得分:3)
以下是我最终用于交换视图的代码:
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,因为它是我要交换的视图的父类型。我认为这可以更新为目标视图的任何类型的父级。