Ich habe ein lineares Layout, das aus Bildansicht und Textansicht besteht, untereinander in einem linearen Layout.
<LinearLayout android:orientation="horizontal" ... >
<ImageView
android:id="@+id/thumbnail"
android:layout_weight="0.8"
android:layout_width="0dip"
android:layout_height="fill_parent">
</ImageView>
<TextView
android:id="@+id/description"
android:layout_weight="0.2"
android:layout_width="0dip"
android:layout_height="wrap_content">
</TextView>
Möglicherweise fehlen einige Regeln. Dies soll eine Vorstellung davon geben, wie das Layout aussieht. Ich möchte eine weitere kleine Textansicht von beispielsweise 50 Dip in Länge und Breite, die über der Bildansicht platziert ist. Mit "über" meine ich Z-Index mehr als Bildansicht. Ich möchte dies in der Mitte und über (überlappend) der Bildansicht platzieren.
Ich möchte wissen, wie wir eine Ansicht mit variierendem Z-Index (vorzugsweise im linearen Layout) über der anderen platzieren können.
Probieren Sie Folgendes aus
.bringToFront()
:http://developer.android.com/reference/android/view/View.html#bringToFront%28%29
quelle
RelativeLayout funktioniert genauso, das letzte Bild im relativen Layout gewinnt.
quelle
Zeichnungsreihenfolge ändern
Eine Alternative besteht darin, die Reihenfolge zu ändern, in der die Ansichten vom übergeordneten Element gezeichnet werden. Sie können diese Funktion in ViewGroup aktivieren, indem Sie setChildrenDrawingOrderEnabled (true) aufrufen und getChildDrawingOrder (int childCount, int i) überschreiben .
Beispiel:
Ausgabe:
Ein Anruf
OrderLayout#setDrawOrder(int)
mit 0-1-2 führt zu:quelle
Sie können verwenden
view.setZ(float)
ab API-Level 21 verwenden. Hier finden Sie weitere Informationen.quelle
Compatibility: API < 21: No-op
. Also ich denke es wird nicht funktionierenIch habe das gleiche Problem gelöst, indem ich hinzugefügt habe,
android:elevation="1dp"
zu welcher Ansicht Sie es über eine andere Ansicht möchten. Aber es kann nicht unter 5.0 angezeigt werden und es wird einen kleinen Schatten haben. Wenn Sie es akzeptieren können, ist es in Ordnung.Also, die richtigste Lösung, die @kcoppock ist, sagte.
quelle
Versuchen Sie dies in einem RelativeLayout:
Für mich geht das.
quelle
Es gibt eine Möglichkeit, LinearLayout zu verwenden. Setzen Sie einfach den marginTop Ihres vorherigen Elements auf den entsprechenden negativen Wert und stellen Sie sicher, dass das Element, das Sie oben haben möchten, hinter dem Element steht, das Sie unten in Ihrem XML haben möchten.
quelle
AFAIK Sie können es nicht mit linearen Layouts tun, Sie müssen sich für ein RelativeLayout entscheiden .
quelle
Wenn Sie die Ansicht programmgesteuert hinzufügen, können Sie sie verwenden
yourLayout.addView(view, 1);
wo
1 is the index
.quelle
Ich verwende dies, wenn Sie möchten, dass bei Bedarf nur eine Ansicht nach vorne gebracht wird:
containerView ist der Container mit zu sortierenden Ansichten, topView ist eine Ansicht, die ich am häufigsten im Container haben möchte.
Wenn mehrere Ansichten angeordnet werden sollen, müssen Sie setChildrenDrawingOrderEnabled (true) verwenden und getChildDrawingOrder (int childCount, int i) wie oben erwähnt überschreiben.
quelle