Estoy tratando de agregar ProgressBar
a encima de a Button
(ambos están dentro de a 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"/>
Pero incluso después de llamar bringToFront
al ProgressBar
in onCreate
, siempre permanece detrás del Button
.
ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar);
progressBar.bringToFront();
android
android-layout
android-constraintlayout
Adam Johns
fuente
fuente
Respuestas:
Establezca una elevación en
ProgressBar
;2dp
parece funcionar.También puede intentar configurar
translationZ
como se sugiere en la respuesta aceptada a una pregunta similar .También encontré esta respuesta como alternativa.
fuente
elevation
ytranslationZ
son solo para API> = 21, ¿qué pasa con las API más antiguas?ViewCompat.setTranslationZ(view, 5)
ViewCompat.setElavation(view, 20f)
te ayudaNecesitamos usar Android: Elevation para controlar esto.
Este atributo de elevación solo funciona en el nivel de API> = 21. Pero a continuación se comportará normalmente. Si agregamos Progreso debajo de la vista Botón, muestra la vista que está en la parte inferior en la parte superior de la otra vista.
fuente
En la mayoría de los casos, simplemente puede definir la vista que desea en la parte superior después de la que debería aparecer debajo.
fuente
ProgressBar
no está encima delButton
aunqueProgressBar
se define despuésButton
en la pregunta.En el diseño de restricción, debe usar
traslationz
superior a la vista que desea a continuación.
fuente
Respuesta actualizada para Android Sutdio 3.5:
En el editor de diseño actualizado, ahora es mucho más fácil elegir qué vista estará al frente, como se muestra en las notas de la versión de Android Studio.
https://developer.android.com/studio/releases
Aún más fácil, si arrastra la Vista hacia arriba (copiar y pegar o desde el Árbol de componentes en el editor de diseño) tendrá una prioridad menor (por lo que estará detrás de las otras vistas)
fuente
Puede ajustarlo como se muestra a continuación. Use framelayout como padre y coloque la barra de porogress fuera del diseño de restricción. Este botón se superpondrá
fuente
El botón tiene configurado TranslationZ por defecto, por lo que tiene dos opciones
1 - hacer que la barra de progreso TranslationZ sea mayor que la elevación del botón
2 - haga que el botón TranslateZ esté en 0 para que las vistas aparezcan una encima de la otra en su diseño de restricción, puede lograr esto configurando el botón Style to
fuente
Aunque
android:elevation="4dp"
otraslationz
funcionará, pero para ese nivel de API debería al menos 21. Si por alguna razón no puede hacer eso, asegúrese de que la vista que desea en la parte superior se mencione después de otras vistas. Por ejemplo, si quiero progressBar encima de ImageView:fuente