web-dev-qa-db-ja.com

Android ConstraintLayout-1つのビューを別のビューの上に配置する

ProgressBarの上にButtonを追加しようとしています(両方とも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"/>

ただし、bringToFrontProgressBaronCreateを呼び出した後でも、常にButtonの後ろに留まります。

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

ProgressBarに標高を設定します。 2dpは機能しているようです。

Android:elevation="2dp"

類似した質問 の受け入れられた答えで提案されているようにtranslationZを設定することもできます。

私は this answer に代わるものとしても出会いました。

104
Cheticamp

ほとんどの場合、ビューの下に表示されるビューの後に、ビューの一番上に表示するビューを定義できます。

3
Cristan

これを制御するには、Android:elevationを使用する必要があります。

Android:elevation="10dp"

このエレベーション属性は、APIレベル> 21でのみ機能します。しかし、それ以下では正常に動作します。 Buttonビューの下にProgressを追加すると、他のビューの上部の下部にあるビューが表示されます。

2
Ishan Fernando