Le bouton s'affiche toujours en haut dans FrameLayout
J'ai FrameLayout comme ceci:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="changeColor"
android:text="new button"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="some text"/>
</FrameLayout>
Le problème est que le bouton est affiché sur le dessus tandis FrameLayout présentation de la classe nous dit ceci: "les vues Enfant sont tirés dans une pile, avec le plus récemment ajouté enfant d'en haut".
- vous pouvez utiliser Linéaire-mise en page
- Double Possible de Incorrecte superposition de comportement dans FrameLayout
Vous devez vous connecter pour publier un commentaire.
Cette réponse
Dans l'Android 5.0 API (21) et au-dessus, vous devez ajouter android:élévation dans la vue.
Officiel android situés souligne:
C'est mieux si vous mettez votre
Button
etTextview
dans unRelativeLayout
à l'intérieur de laFrameLayout
comme:Mettre votre
Button
à l'intérieur deFrameLayout
FrameLayout doit être utilisé pour tenir une
single child view
, car il peut être difficile d'organiser les vues enfant de manière évolutive à différentes tailles d'écran sans les enfants se chevauchent les uns les autres.Vous devez utiliser LinearLayout ou RelativeLayout dans FrameLayout .
Comme cette façon
Pour API < 21 vous ne pouvez pas utiliser android:stateListAnimator="@null" ou le changement de l'altitude. Dans mon cas, j'ai utilisé 2 cadre de dispositions incorporées dans une contrainte de mise en page.
Comme le cadre de mises en page peuvent être empilés les uns sur les autres il n'est pas nécessaire de changer l'élévation de la textview.
Apperently android:stateListAnimator="@null" fonctionne uniquement pour les API = 21 ou plus,
Donc, pour ceux qui cible API<21 les utiliser, il a travaillé pour moi 😀
HTML: