Android: поменяйте местами 2 просмотра - PullRequest
2 голосов
/ 19 ноября 2011

В моем TableLayout одна TableRow имеет TextView, а другая имеет Spinner.Когда пользователь устанавливает флажок, я хочу поменять местами эти 2 вида.Spinner должен переместиться в положение TextView, а TextView должен переместиться в положение Spinner.

Анимация не имеет значения.Предпочитается, чтобы это происходило мгновенно, но я мог бы сделать анимацию очень быстрой, если это необходимо.

Я был удивлен тем, как много у меня возникло проблем с поиском решения этой проблемы: / В аналогичной заметке ссылка на Android dev действительно может использовать несколько простых примеров, таких как библиотека MSDN.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 19 ноября 2011

Вы можете попытаться удалить первый TextView, а затем добавить обратно в конец линейного макета, используя addView.

TextView tv = (TextView)layout.getChildAt(0);
layout.removeView(tv);
layout.addView(tv);

Это не совсем чистый код, но я могу сработать:)

3 голосов
/ 08 декабря 2011

Вот код, который я использовал, чтобы поменять местами представления:

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, потому что это тип родителя представлений, которые я хочу поменять.Я предполагаю, что это может быть обновлено, чтобы быть тем типом родителя, который имеют целевые представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...