Mam plik główny pliku xml z dwoma widokami tekstu A/B i widokiem C. Niż mam dwa inne pliki układu xml option1
i option2
. Czy można załadować option1
lub option2
w czasie wykonywania przez Javę do C? Jeśli tak, to jakiej funkcji muszę użyć?Układ systemu Android zastępujący widok innym widokiem w czasie wykonywania.
146
A
Odpowiedz
319
Możesz zastąpić dowolny widok w dowolnym momencie.
int optionId = someExpression ? R.layout.option1 : R.layout.option2;
View C = findViewById(R.id.C);
ViewGroup parent = (ViewGroup) C.getParent();
int index = parent.indexOfChild(C);
parent.removeView(C);
C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Jeśli nie chcesz zastąpić już istniejące View, ale wybierać między opcja1/opcja2 w czasie inicjalizacji, to można to zrobić łatwiej: set android:id
dla układu nadrzędnego, a następnie:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Będziesz musiał ustawić "indeks" na właściwą wartość w zależności od struktury widoków. Można również użyć ViewStub: dodaj swój pogląd jako ViewStub C, a następnie:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
ten sposób nie będziesz musiał martwić się o ponad „wskaźnik” wartości, jeśli będzie chciał zrestrukturyzować swój układ XML.
36
A jeśli robisz to bardzo często, możesz użyć opcji ViewSwitcher lub ViewFlipper, aby ułatwić zastępowanie widoku.
Powiązane problemy
- 1. Ukryj widok za innym widokiem w Androidzie
- 2. Jak animować widok, aby ukryć się pod innym widokiem, a następnie animować widok Widok
- 3. Android - skalowanie widoku (układu) w czasie wykonywania
- 4. Ogranicz szerokość w ConstraintLayout innym widokiem
- 5. Widok systemu Android layout_width - jak zmienić programowo?
- 6. Sprawdź, czy widok jest ładowany w czasie wykonywania
- 7. Jak dodać widok dynamiczny do elementu ListView w czasie wykonywania?
- 8. Ładowanie XAML w czasie wykonywania?
- 9. Jak zamienić widok programowo w systemie Android?
- 10. Jak dodać widok recyklingu w układ xml
- 11. Awaria OCMock w czasie wykonywania
- 12. Rozszerzalność widoków ASP.NET MVC w czasie wykonywania
- 13. Przycisk do rysowania systemu Android na płótnie z niestandardowym widokiem?
- 14. metoda wywołania w czasie wykonywania
- 15. Powielanie składników w czasie wykonywania
- 16. Widok zend: bootstrap (widok) lub bootstrap (układ)
- 17. Umożliwia przełączanie między widokiem dużym i widokiem normalnym dla powiadomień z systemu Android programowo za pomocą przycisku akcji powiadamiania
- 18. Rejestrowanie metoda czasie wykonywania
- 19. Żądanie uprawnień administratora w czasie wykonywania
- 20. Android - Jak pobrać obraz i użyć go w czasie wykonywania?
- 21. Wykryj własną aplikację Android: kod wersji w czasie wykonywania
- 22. Android, jak zmienić język aplikacji w czasie wykonywania
- 23. Czy można oglądać zmienne w czasie wykonywania?
- 24. właściwości Układ obchodzenia się z widokiem na zlecenie Razor silnika
- 25. Widok przeciągnij i upuść poza widokiem Recycler
- 26. Jak uzyskać preferencje dzwonka w czasie wykonywania?
- 27. Układ nie jest zawyżany w niestandardowym komponencie systemu Android
- 28. Układ systemu Android lewa i prawa wyrównania w układzie poziomym
- 29. Ustaw kolor tła widoku Układ na gradient w systemie Android?
- 30. Układ widok po zmianie rozmiaru
Czy muszę usunąć fragment, czy też fragment zostanie usunięty? –
@KarlMorrison To pytanie ma prawie 4 lata i nie ma nic wspólnego z fragmentami. Proponuję złożyć nowe pytanie i/lub rzucić okiem na "android.app.FragmentTransaction" i metodę 'replace()'. – lupz
Szkoda, że twoja odpowiedź jest zbyt skomplikowana - w komentarzach - dla początkujących programistów Androida :-( –