Android ConstraintLayout - Поместите один вид поверх другого представления
Я пытаюсь добавить 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"/>
Но даже после вызова bringToFront
на ProgressBar
в onCreate
он всегда остается за Button
.
ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar);
progressBar.bringToFront();
Ответы
Ответ 1
Установите высоту на ProgressBar
; 2dp
, похоже, работает.
android:elevation="2dp"
Вы также можете попробовать установить translationZ
, как это было предложено в принятом ответе на аналогичный вопрос.
Я также встретил этот ответ в качестве альтернативы.
Ответ 2
Нам нужно использовать Android: высота, чтобы контролировать это.
android:elevation="10dp"
Этот атрибут повышения работает только на уровне API> 21. Но в дальнейшем это будет вести себя нормально. Если мы добавим Progress под представлением Button, он покажет представление, которое находится внизу вверху другого представления.
Ответ 3
В большинстве случаев вы можете просто определить представление, которое вы хотите сверху, после того, которое должно появиться под ним.