Ho una vista personalizzata che estende la classe View. Vorrei che 2 istanze della mia vista personalizzata fossero sovrapposte l'una sull'altra. Come dovrebbe apparire il mio file di layout per raggiungere questo obiettivo?Come sovrapporre viste
risposta
Risulta che FrameLayout era quello che volevo. Basta fare questo nel layout:
<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>
Utilizzare un RelativeLayout
. I bambini successivi di RelativeLayout
si sovrappongono ai bambini precedenti.
Mentre è vero che si può ottenere utilizzando stratificazione RelativeLayout
e FrameLayout
, in API 21 e superiori .. le cose sono cambiate.
In API 21 e versioni successive, i figli successivi di xml non significano che si sovrapporranno ai bambini precedenti. Invece, utilizza Elevation
per determinare quale vista si sovrapporrà ad un'altra vista (Z-Index).
Ad esempio, se si dispone di qualcosa di simile.
<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>
Il View
non saranno visibili anche se è stato aggiunto dopo Button
. Questo perché Button
ha un'altitudine maggiore di View
. Per riorganizzare Z-Index è possibile aggiungere l'attributo elevation
alle rispettive viste.
<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>
In questo modo il View
si sovrappongono l'Button
.
Ulteriori informazioni sulla Elevation & Shadows: https://material.io/guidelines/material-design/elevation-shadows.html
- 1. Come sovrapporre due geom_bar?
- 2. Come sovrapporre le immagini in javascript?
- 3. Come sovrapporre due file audio usando ffmpeg
- 4. Come sovrapporre un Jbutton a una JprogressBar
- 5. Come sovrapporre una tela al testo?
- 6. Come posso sovrapporre due grafici in Seaborn?
- 7. come sovrapporre due div in css?
- 8. Come sovrapporre la grafica sui giochi Windows?
- 9. Come sovrapporre le immagini in nativa reattiva
- 10. Come aggiungere le viste alle viste a livello di programmazione
- 11. Evento di tocco gestito da più viste
- 12. Applicazione finestra trasparente da sovrapporre in Windows
- 13. Sovrapporre una tela su un div
- 14. Come sovrapporre la vista sulla barra del controller di navigazione?
- 15. Come sovrapporre un'immagine su una mappa IOS usando swift
- 16. Come sovrapporre, ridimensionare e centrare un componente su un JPanel?
- 17. Come posso sovrapporre un'ombra esterna a una ScrollView?
- 18. Come sovrapporre/incorporare il pulsante di avvio sull'immagine?
- 19. Come posso sovrapporre immagini (png) all'interno di un sito web?
- 20. Come sovrapporre un cerchio su una mappa iOS
- 21. Come unire due icone insieme? (Sovrapporre un'icona sopra l'altro)
- 22. Come posso sovrapporre un testo a un altro usando CSS?
- 23. Come posso sovrapporre un controllo su una finestra?
- 24. Come posso sovrapporre un numero sopra un glifo FontAwesome?
- 25. Come possiamo sovrapporre due immagini usando lo stile css?
- 26. Come posso sovrapporre i diagrammi SVG su Google Maps?
- 27. Come filigrana/sovrapporre l'immagine su una pagina html?
- 28. Come posso sovrapporre un SKScene a un SCNScene in Swift?
- 29. Puoi sovrapporre un div trasparente a un'immagine
- 30. come rimuovere le viste secondarie
Grazie amico. Stavo impazzendo per questo e sembra funzionare abbastanza bene. Pensavo che FrameLayout potesse contenere solo 1 vista figlio visibile alla volta ... Stavo già provando a creare il mio layout ed era come pensare: deve esserci un modo più semplice! P.S. Oh e nel caso non sia ovvio, le viste vengono visualizzate dall'alto verso il basso per impostazione predefinita in modo che board2 venga disegnata sulla parte superiore della scheda1. – Timo
Molto bello. Devo dire che non mi piace quanto spesso vengano utilizzati i layout relativi e sono contento che questo non ne usi uno. (I parenti sono così disordinati! Ogni singolo oggetto deve avere alcuni attributi che descrivono la sua posizione! Sembra che questo sconfigga lo scopo di usare i layout ...) – ArtOfWarfare