Как мне добавлять и удалять представления, такие как TextView
s, из приложения Android, например, на исходном экране контактов Android, где вы нажимаете небольшой значок в правой части поля, и он добавляет или удаляет поле, состоящее из a TextView
и editTextView
(из чего Я могу видеть).
Есть примеры того, как этого добиться?
android
android-view
Джонатан
источник
источник
Мне нужна точно такая же функция, как описано в этом вопросе. Вот мое решение и исходный код: https://github.com/laoyang/android-dynamic-views . И вы можете увидеть демонстрацию видео в действии здесь: http://www.youtube.com/watch?v=4HeqyG6FDhQ
раскладка
В основном у вас будет два файла макета xml:
TextEdit
, aSpinner
и anImageButton
для удаления.контроль
В коде Java вы добавляете и удаляете представления строк в контейнер динамически, используя inflate, addView, removeView и т. Д. В стандартном приложении Android есть некоторые элементы управления видимостью для лучшего UX. Вам нужно добавить TextWatcher для представления EditText в каждой строке: когда текст пуст, вам нужно скрыть кнопку « Добавить» и кнопку «Удалить». В своем коде я написал
void inflateEditRow(String)
вспомогательную функцию для всей логики.Прочие уловки
android:animateLayoutChanges="true"
в xml, чтобы включить анимациюИсходный код
Код Java основного действия (это объясняет всю логику, но довольно много свойств задано в файлах макета xml; полное решение см. В исходном коде Github):
источник
Это мой общий способ:
источник
Привет, вы можете попробовать этот способ, добавив относительный макет, а затем добавив в него текстовое представление.
источник
Класс ViewGroup предоставляет API для управления дочерними представлениями во время выполнения, позволяя также добавлять / удалять представления.
Еще несколько ссылок по теме:
Android, добавьте новое представление без XML-макета
Руководство по разметке среды выполнения Android
http://developer.android.com/reference/android/view/View.html
http://developer.android.com/reference/android/widget/LinearLayout.html
источник
Просто используйте,
myView.setVisibility(View.GONE);
чтобы полностью удалить. Но если вы хотите зарезервировать занимаемое пространство внутри своего родительского, используйтеmyView.setVisibility(View.INVISIBLE);
источник
View.INVISIBLE
только вид скрывает.OnClickListener
(Если он установлен) будет по- прежнему реагировать на пользователя , если они касаются область , где вид присутствует (но не видно). Так что в идеале вы также должны удалитьOnClickListeners
в таких случаяхДля добавления кнопки
Для снятия кнопки
источник
Привет, сначала напишите класс деятельности. Следующий класс имеет название категории и небольшую кнопку добавления. Когда вы нажимаете кнопку добавления (+), он добавляет новую строку, которая содержит EditText и ImageButton, который выполняет удаление строки.
2. Напишите XML-макет, как указано ниже.
источник
// Теперь добавляем xml main
// теперь добавляем просмотр xml файла ..
источник
Kotlin Extension Solution
Добавить
removeSelf
для прямого вызова на просмотр. Если прикреплен к родительскому объекту, он будет удален. Это делает ваш код более декларативным и, следовательно, читаемым.Вот 3 варианта того, как программно добавить представление в
ViewGroup
.источник