web-dev-qa-db-fra.com

Android ConstraintLayout - Placez une vue par-dessus une autre vue

J'essaie d'ajouter une ProgressBar à une Button (les deux sont à l'intérieur d'une 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 ProgressBar dans onCreate, elle reste toujours derrière la Button.

ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar);
progressBar.bringToFront();
48
Adam Johns

Définissez une élévation sur 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 .

J'ai aussi rencontré cette réponse comme alternative.

91
Cheticamp

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

3
Cristan

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 en dessous de cela, 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.

0
Ishan Fernando