Ich versuche, ein ProgressBar
über a hinzuzufügen Button
(beide befinden sich in 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"/>
Aber auch nach dem Aufruf bringToFront
des ProgressBar
In onCreate
bleibt es immer hinter dem Button
.
ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar);
progressBar.bringToFront();
android
android-layout
android-constraintlayout
Adam Johns
quelle
quelle
Antworten:
Stellen Sie eine Höhe auf die
ProgressBar
;2dp
scheint zu funktionieren.Sie können auch versuchen,
translationZ
die in der akzeptierten Antwort auf eine ähnliche Frage vorgeschlagenen Einstellungen vorzunehmen .Ich bin auch auf diese Antwort als Alternative gestoßen.
quelle
elevation
undtranslationZ
nur für API> = 21, was ist mit älteren APIs?ViewCompat.setTranslationZ(view, 5)
ViewCompat.setElavation(view, 20f)
hilft dirWir müssen Android: Elevation verwenden, um dies zu kontrollieren.
Dieses Höhenattribut funktioniert nur auf API-Ebene> = 21. Im Folgenden verhält es sich jedoch normal. Wenn wir unter der Schaltflächenansicht den Fortschritt hinzufügen, wird die Ansicht unten oben in der anderen Ansicht angezeigt.
quelle
In den meisten Fällen können Sie einfach die Ansicht definieren, die oben nach der Ansicht angezeigt werden soll, die darunter angezeigt werden soll.
quelle
ProgressBar
nicht oben auf demButton
, obwohlProgressBar
nachButton
in der Frage definiert wird.Aktualisierte Antwort für Android Sutdio 3.5:
Im aktualisierten Layout-Editor können Sie jetzt viel einfacher auswählen, welche Ansicht angezeigt werden soll, wie in den Versionshinweisen zu Android Studio gezeigt
https://developer.android.com/studio/releases
Noch einfacher: Wenn Sie die Ansicht nach oben ziehen (Kopieren, Einfügen oder aus dem Komponentenbaum im Layout-Editor), erhält sie eine niedrigere Priorität (also hinter den anderen Ansichten).
quelle
Im Constraint-Layout sollten Sie verwenden
traslationz
höher als die Ansicht, die Sie unten sehen möchten.
quelle
Sie können es wie folgt einwickeln. Verwenden Sie framelayout als übergeordnetes Element und platzieren Sie die Porogress-Leiste außerhalb des Einschränkungslayouts. Dies überlappt die Schaltfläche
quelle
Für die Schaltfläche ist standardmäßig TranslationZ festgelegt, sodass Sie zwei Optionen haben
1 - Fortschrittsbalken TranslationZ größer als die Tastenhöhe machen
2 - Schalten Sie die Schaltfläche TranslateZ auf 0, damit die Ansichten in der Reihenfolge in Ihrem Einschränkungslayout übereinander angezeigt werden. Sie können dies erreichen, indem Sie den Stil auf die Schaltfläche setzen
quelle