128 votes

Android ConstraintLayout - Placez une vue au-dessus d'une autre vue

J'essaie d'ajouter un ProgressBar à un Button (les deux sont à l'intérieur d'un ConstraintLayout ).

 <Button
    android:id="@+id/sign_in_button"
    android:layout_width="280dp"
    android:layout_height="75dp"
    android:layout_marginBottom="75dp"
    android:layout_marginTop="50dp"
    android:text="@string/sign_in"
    android:textColor="@color/white"
    android:textSize="22sp"
    android:textStyle="bold"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/passwordEditText"
    app:layout_constraintVertical_bias="0.0"/>

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toTopOf="@+id/sign_in_button"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="@+id/sign_in_button"
    android:layout_marginBottom="8dp"
    app:layout_constraintVertical_bias="0.5"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="@+id/sign_in_button"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="@+id/sign_in_button"/>
 

Mais même après avoir appelé bringToFront sur le ProgressBar en onCreate , il reste toujours derrière le Button .

 ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar);
progressBar.bringToFront();
 

212voto

Cheticamp Points 22529

Définissez une altitude sur les ProgressBar ; 2dp semble fonctionner.

 android:elevation="2dp"
 

Vous pouvez également essayer de définir translationZ comme suggéré dans la réponse acceptée à une question similaire .

Je suis également tombé sur cette réponse comme une alternative.

21voto

Ishan Fernando Points 894

Nous devons utiliser Android: altitude pour contrôler cela.

 android:elevation="10dp"
 

Cet attribut d’altitude ne fonctionne que dans un niveau d’API> 21. Mais au-dessous, il se comportera normalement. Si nous ajoutons Progress sous la vue Bouton, il affiche la vue qui se trouve en bas, en haut de l'autre vue.

11voto

Cristan Points 398

Dans la plupart des cas, vous pouvez simplement définir la vue de votre choix par-dessus celle qui doit apparaître en dessous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X