在我的TableLayout上,一個TableRow有一個TextView,另一個有一個Spinner。當用戶選中一個複選框時,我想交換這兩個視圖的位置。微調需要移動到TextView的位置,TextView需要移動到微調的位置。Android:交換2個視圖的位置
動畫無關緊要。首選項是它會立即發生,但如果有必要,我可以使它成爲超快速的動畫。
我很驚訝我試圖找到解決這個問題的麻煩:/在類似的說明中,Android開發人員可以真正使用MSDN庫中的一些簡單示例。
謝謝!
在我的TableLayout上,一個TableRow有一個TextView,另一個有一個Spinner。當用戶選中一個複選框時,我想交換這兩個視圖的位置。微調需要移動到TextView的位置,TextView需要移動到微調的位置。Android:交換2個視圖的位置
動畫無關緊要。首選項是它會立即發生,但如果有必要,我可以使它成爲超快速的動畫。
我很驚訝我試圖找到解決這個問題的麻煩:/在類似的說明中,Android開發人員可以真正使用MSDN庫中的一些簡單示例。
謝謝!
這是我最後使用交換意見代碼:
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,因爲它是我想要交換的視圖的父類型。我認爲這可以更新爲目標視圖具有的任何父類型。
您可以嘗試刪除第一個TextView,然後使用addView將其添加回到線性佈局的末尾。
TextView tv = (TextView)layout.getChildAt(0);
layout.removeView(tv);
layout.addView(tv);
這不是一個真正乾淨的代碼,但我的東西可能工作:)
不錯。我在星期五離開工作之前就開始實施這個方法,但還沒有機會去測試它。我不認爲我同意這不是乾淨的代碼。這些Android表單比HTML表單更類似於HTML表單。在發佈這個問題之後,我想到了它應該更像HTML DOM,而不是作爲位於(x,y)位置畫布上的項目。要在HTML DOM中移動項目,您必須刪除並重新添加它們 – jwatts1980