Mam niestandardowy widok rozszerzający klasę Widok. Chciałbym 2 wystąpienia mojego niestandardowego widoku warstw bezpośrednio na siebie. Jak powinien wyglądać mój plik układu, aby to osiągnąć?Jak warstwować widoki
Odpowiedz
Okazało się, że FrameLayout było tym, czego chciałem. Po prostu zrób to w układzie:
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<com.proj.MyView
android:id="@+id/board1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<com.proj.MyView
android:id="@+id/board2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</FrameLayout>
Użyj RelativeLayout
. Później dzieci z RelativeLayout
będą nakładać się na wcześniejsze dzieci.
Choć to prawda, że można osiągnąć za pomocą warstw RelativeLayout
i FrameLayout
, API 21 i wyżej .. wiele się zmieniło.
W interfejsie API 21 i nowszym późniejsze elementy podrzędne xml nie oznaczają, że będą się one nakładać na wcześniejsze dzieci. Zamiast tego używa Elevation
, aby określić, który widok pokryje się z innym widokiem (indeks Z).
Na przykład, jeśli masz coś takiego.
<FrameLayout
android:layout_height="match_parent"
android:layout_width="match_parent">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:text="Hello World"
android:layout_gravity="top" />
<View
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="@android:color/black"
android:layout_gravity="bottom" />
</FrameLayout>
View
nie będzie widoczny, nawet jeśli został on dodany po Button
. To dlatego, że Button
ma wyższą wysokość niż View
. Aby zmienić rozmieszczenie indeksu Z, możesz dodać atrybut elevation
do odpowiednich widoków.
<FrameLayout
android:layout_height="match_parent"
android:layout_width="match_parent">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:text="Hello World"
android:layout_gravity="top"
android:elevation="0dp" />
<View
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="@android:color/black"
android:layout_gravity="bottom"
android:elevation="2dp" />
</FrameLayout>
ten sposób View
będzie pokrywać Button
.
Więcej informacji na Podwyższenia & cieni: https://material.io/guidelines/material-design/elevation-shadows.html
- 1. Jak usunąć widoki podrzędne
- 2. Jak mogę przetestować widoki MVC?
- 3. Widoki podkatalogu Sinatra
- 4. Widoki i struktura obiektu
- 5. Zmaterializowane widoki PostgreSQL
- 6. Widoki AngularJS w Wordpressie
- 7. Polimorficzne widoki MVC
- 8. Widoki ApiControllers i Razor
- 9. Kątowy interfejs użytkownika: widoki zagnieżdżone a widoki wielokrotne
- 10. Widoki oparte na klasach Widoki oparte na funkcjach VS
- 11. Jak skonfigurować widoki Popover, aby prawidłowo odrzucić
- 12. Programowe widoki Jak ustawić unikalne identyfikatory?
- 13. Jak wyświetlić widoki za paskiem narzędzi?
- 14. Android: Jak znaleźć widoki według typu
- 15. Jak uzyskać widoki z Androidem Databinding?
- 16. Jak skonfigurować zagnieżdżone widoki w AngularJS?
- 17. Jak mogę przetestować widoki w wtyczce Rails?
- 18. okrągłe tekstowe Widoki takie jak Google Messenger
- 19. Jak buforować widoki w systemie Android?
- 20. Jak przełączać widoki z animacją - cel c
- 21. Jak zaktualizować widoki systemu Android po modyfikacjach?
- 22. Jak skonstruować niestandardowe widoki w xamarin
- 23. Jak wyśrodkować dwa widoki we względnym układzie?
- 24. Widoki mobilne/Wykrywanie urządzenia
- 25. Odśwież widoki MySQL?
- 26. Django Sitemaps i "normalne" widoki
- 27. równomiernie rozmieszczając widoki wykorzystujące ConstraintLayout
- 28. Nakładające się widoki w UIStackView
- 29. Programowalne widoki kliknięć w Androidzie
- 30. Czy można tworzyć widoki Razor?
Dzięki mate. Oszalałem z tego powodu i wydaje mi się, że działa całkiem dobrze. Myślałem, że FrameLayout może mieć tylko jeden widoczny widok dziecka na raz ... Już próbowałem stworzyć własny układ i pomyślałem: musi być łatwiejszy sposób! P.S. Aha, a jeśli nie jest to oczywiste, widoki są domyślnie renderowane od góry do dołu, więc plansza 2 jest narysowana na planszy1. – Timo
Bardzo ładne. Muszę powiedzieć, że nie podoba mi się to, jak często używane są układy względne i jestem szczęśliwy, że tego nie używa. (Krewni są po prostu niechlujni! Każdy pojedynczy obiekt musi mieć kilka atrybutów opisujących jego pozycję! Wydaje się, że to pokonuje cel używania układów ...) – ArtOfWarfare