Układ systemu Android zastępujący widok innym widokiem w czasie wykonywania
175
Mam xmlplik -layout main z dwoma widokami tekstowymi A / B i widokiem C. Mam dwa inne xmlpliki -layout option1i option2. Czy to możliwe, aby załadować albo option1czy option2w czasie wykonywania przez Java w C? Jeśli tak, jakiej funkcji mam użyć?
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ępować już istniejącego widoku , ale wybierasz między opcją 1 / opcją 2 w czasie inicjalizacji, możesz to zrobić łatwiej: ustaw android:iddla układu nadrzędnego, a następnie:
Będziesz musiał ustawić "indeks" na odpowiednią wartość w zależności od struktury widoków. Możesz także użyć ViewStub : dodaj swój widok C jako ViewStub, a następnie:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
W ten sposób nie będziesz musiał martwić się o wartość powyżej „indeksu”, jeśli będziesz chciał przebudować swój układ XML.
@KarlMorrison To pytanie ma prawie 4 lata i nie ma nic wspólnego z fragmentami. Proponuję zgłosić nowe pytanie i / lub przyjrzeć się android.app.FragmentTransactionjego replace()metodzie.
@broot Chcę codziennie dodawać obrazy do mojego linearnego układu, który zrobiłem. później usuwam niektóre obrazy z układu. następnie chcę przywrócić go na jego miejscu, z którego usunąłem. oznacza, że chcę dodawać obrazy bez usuwania rodzica dziecka, czy możesz mnie zawstydzić?
Chociaż ten kod może odpowiedzieć na pytanie, dostarczenie dodatkowego kontekstu dotyczącego tego, jak i / lub dlaczego rozwiązuje problem, poprawiłoby długoterminową wartość odpowiedzi
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.