Jak dodawać i usuwać widoki, takie jak TextView
s z aplikacji na Androida, tak jak na oryginalnym ekranie kontaktów Androida, gdzie naciskasz małą ikonę po prawej stronie pola i dodaje lub usuwa pole składające się z a TextView
i editTextView
(z czego Widze).
Jakieś przykłady, jak to osiągnąć?
android
android-view
Jonathan
źródło
źródło
Potrzebuję dokładnie tej samej funkcji opisanej w tym pytaniu. Oto moje rozwiązanie i kod źródłowy: https://github.com/laoyang/android-dynamic-views . Możesz zobaczyć demonstrację wideo w akcji tutaj: http://www.youtube.com/watch?v=4HeqyG6FDhQ
Układ
Zasadniczo będziesz mieć dwa pliki układu XML:
TextEdit
, aSpinner
i anImageButton
do usunięcia.Kontrola
W kodzie Java będziesz dynamicznie dodawać i usuwać widoki wierszy w kontenerze, używając inflate, addView, removeView itp. W standardowej aplikacji na Androida istnieje pewna kontrola widoczności dla lepszego UX. Musisz dodać TextWatchera dla widoku EditText w każdym wierszu: gdy tekst jest pusty, musisz ukryć przycisk Dodaj nowy i przycisk Usuń. W moim kodzie napisałem funkcję
void inflateEditRow(String)
pomocniczą dla całej logiki.Inne sztuczki
android:animateLayoutChanges="true"
w XML, aby włączyć animacjęKod źródłowy
Kod Java głównego działania (To wyjaśnia całą logikę, ale sporo właściwości jest ustawionych w plikach układu xml, kompletne rozwiązanie można znaleźć w źródle Github):
źródło
To jest mój ogólny sposób:
źródło
Cześć Możesz spróbować w ten sposób, dodając względny układ, a następnie dodając w nim widok tekstu.
źródło
Klasa ViewGroup udostępnia interfejs API do zarządzania widokami podrzędnymi w czasie wykonywania, umożliwiając również dodawanie / usuwanie widoków.
Inne linki na ten temat:
Android, dodaj nowy widok bez układu XML
Samouczek dotyczący układu środowiska wykonawczego systemu Android
http://developer.android.com/reference/android/view/View.html
http://developer.android.com/reference/android/widget/LinearLayout.html
źródło
Po prostu użyj,
myView.setVisibility(View.GONE);
aby go całkowicie usunąć. Ale jeśli chcesz zarezerwować zajmowane miejsce wewnątrz jego rodzica, użyjmyView.setVisibility(View.INVISIBLE);
źródło
View.INVISIBLE
tylko ukrywa widok.OnClickListener
(Jeśli jest ustawione) będzie nadal reagować na użytkownika, jeśli one dotykać obszaru , gdzie widok jest obecny (ale nie jest widoczna). Więc najlepiej teżOnClickListeners
w takich przypadkach należy usunąćAby dodać przycisk
Do usunięcia przycisku
źródło
Cześć Najpierw napisz zajęcia Activity. Następująca klasa ma nazwę kategorii i mały przycisk dodawania. Po naciśnięciu przycisku dodaj (+) dodaje nowy wiersz, który zawiera EditText i ImageButton, który wykonuje usuwanie wiersza.
2. Napisz Layout xml jak podano poniżej.
źródło
// Teraz dodaj xml main
// teraz dodaj widok pliku xml ..
źródło
Rozszerzenie Kotlin
Dodaj,
removeSelf
aby bezpośrednio wywołać widok. Jeśli zostanie dołączony do rodzica, zostanie usunięty. To sprawia, że twój kod jest bardziej deklaratywny, a tym samym czytelny.Oto 3 opcje, jak programowo dodać widok do pliku
ViewGroup
.źródło