2012-01-05 2 views
7

В моем приложении я динамически добавляю представление в линейную компоновку. каждый вид состоит из одной кнопки, если вы нажмете на нее, тогда будет удалено представление. Как обновить линейную компоновку? потому что, когда я удаляю любой вид, позиции позиции будут изменены.android - как удалить представление линейного макета

ответ

10

Чтобы удалить вид, вы можете использовать

ll.removeView(view)// to remove particular view 
ll.removeViewAt(position);// to remove view from particular position 

использовать следующую логику, чтобы удалить вид из макета

ll.post(new Runnable() { 
    public void run() { 
     ll.removeView(view); 
    } 
}); 
+1

почему вы не использовали 'removeAllViews()' следующим образом: ll.removeAllViews(); – NrNazifi

4

Вы сомневаетесь, что это не ясно. Но вы можете попытаться настроить представление как visibility = gone.

0

ли вы пробовали

setContentView(R.layout.main); 

после извлекает?

+0

ой, забыл, что вы создавать элементы dynamicaly – quux

0

Как обновить линейную компоновку?

linearLayoutObject.invalidate() 

Как удалить элемент из линейной компоновки?

linearLayoutObject.removeView(View view); 

или

linearLayoutObject.removeViewAt(int index); 

Я надеюсь, что это помогает ..

+0

Пожалуйста, прекратите предлагая изменения, где вы «исправить» ссылки. Замена текста ссылки на «Link1» или что-то подобное - ужасное редактирование, и вы делаете работу для людей, которые должны их исправить. См. Мое редактирование о том, как ссылки на самом деле должны работать: http://stackoverflow.com/q/8741270/229044 – meagar

2

путем добавления или удаления Соображениях LinearLayout должен измерять и макет всех своих детей снова поэтому они двигаются. Вы можете просто попытаться настроить видимость на невидимую.

myLinearLayout.setVisibility(View.INVISIBLE); 

любой вид набор для невидимым по-прежнему сохраняет свои размеры и расположение в макете, но уже не может быть виден.

0

используйте listview с адаптером для динамического заполнения данных (потому что это то, что они сделаны), и всякий раз, когда ваши данные или пользовательский интерфейс меняются, создайте новый адаптер (набор данных) и сообщите об этом адаптеру.

0

Просто используйте linearLayout.removeView (View вид); Он автоматически обновится.

0

layout.removeAllViewsInLayout(); layout.invalidate();

Я надеюсь, что эта помощь

Смежные вопросы