Android ConstraintLayout-하나의 뷰를 다른 뷰 위에 놓기 app:layout_constraintBottom_toBottomOf=”parent”

나는 ProgressBar위에 a를 추가하려고 합니다 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();



답변

에 고도를 설정합니다 ProgressBar. 2dp작동하는 것 같습니다.

android:elevation="2dp"

유사한 질문translationZ 에 대한 수락 된 답변에서 제안 된대로 설정 을 시도 할 수도 있습니다 .

나는 또한 대안 으로이 대답 을 보았습니다.


답변

이를 제어하려면 android : elevation을 사용해야합니다.

android:elevation="10dp"

이 고도 속성은 API 레벨> = 21에서만 작동합니다.하지만 그 이하에서는 정상적으로 작동합니다. Button 뷰 아래에 Progress를 추가하면 다른 뷰의 맨 아래에있는 뷰가 표시됩니다.


답변

대부분의 경우 아래에 표시되어야하는 뷰 다음에 상단에 원하는 뷰를 정의 할 수 있습니다.


답변

Constraint 레이아웃에서는 다음을 사용해야합니다.

Traslationz

아래에서 원하는보기보다 높습니다.


답변

Android Sutdio 3.5에 대한 업데이트 된 답변 :

업데이트 된 Layout Editor에서 이제 Android Studio 출시 노트에 설명 된대로 앞에 표시 할 뷰를 선택하는 것이 훨씬 쉬워졌습니다.

.. 또한 파란색 오버레이가 이제 제약 조건의 대상을 강조 표시합니다. 이 강조 표시는 다른 구성 요소와 겹치는 구성 요소로 제한하려고 할 때 특히 유용합니다.

https://developer.android.com/studio/releases

더 쉽게, 뷰를 위로 드래그하면 (복사 붙여 넣기 또는 레이아웃 편집기의 컴포넌트 트리에서) 우선 순위가 낮아집니다 (따라서 다른 뷰보다 뒤에있게됩니다).


답변

아래와 같이 래핑 할 수 있습니다. 겹치는 버튼

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 //your all view inside it with button
 <Button/>......
  .........
 </androidx.constraintlayout.widget.ConstraintLayout>

 <ProgressBar
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</FrameLayout>


답변

기본적으로 버튼에는 TranslationZ가 설정되어 있으므로 두 가지 옵션이 있습니다.

1-진행률 표시 줄 TranslationZ를 버튼 고도보다 크게 만듭니다.

ViewCompat.setTranslationZ(progressBar, 5)// to support older api <21

2-버튼 TranslateZ를 0으로 설정하여 뷰가 Constraint Layout에서 순서대로 서로 위에 나타나도록합니다. Style을 button으로 설정하여이 작업을 수행 할 수 있습니다.

style="@style/Widget.AppCompat.Button.Borderless"