Frage

Ich habe ein Layout ähnlich der ICS Gmail App für Tablets (ListFragment links und Inhalt rechts) und ich habe mich gefragt, wie ich die Layouts so konstruieren könnte, dass zwischen den beiden Fragmenten ein Schattentrennzeichen vorhanden ist (wie in der unten gezeigten Google Mail-App)

.Just look at that beautiful shadow!

Da dies auch auf diese Frage zutrifft, wie kann ich diese schöne Dreieck- / Pfeilmarkierung im Layout des aktiven Listenelements haben?Ich gehe davon aus, dass die Listenansicht selbst liegen muss, um dies zu implementieren oben die Schatten- "Ebene", aber ich habe keine Ahnung, wie ich das erstellen soll.

War es hilfreich?

Lösung

Nur um alle wissen zu lassen (weil es anscheinend an Informationen zu diesem Thema mangelt), wird dies in der Hintergrundauswahl-XML der Ansicht der einzelnen Listenzeilen erreicht.Dies ist beispielsweise das Layout des Hauptbildschirms,

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_row"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/list_item_selector">

    ...<!-- Rest of layout goes here -->

</RelativeLayout>

Aber die Magie kommt in die list_item_selector:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/list_pressed" />
    <item android:state_activated="true" android:drawable="@drawable/list_arrow_activated"  />
    <item android:drawable="@drawable/list_default" />
</selector>

Indem Sie diese als 9-Patch-Zeichen wie folgt definieren, können Sie jedes Listenelement seine Schattenbreite zu dieser Linie in der Mitte beitragen lassen, und wenn es aktiviert wird, wird dieses Schattensegment durch einen Pfeil ersetzt.Ich hoffe, das hilft jemandem, denn es hat mir sicher geholfen!

Andere Tipps

Ich möchte das Gleiche tun, was du versuchst zu tun;erzeugen Sie einen Effekt, bei dem ein Fragment "näher" ist als ein anderes.

Roboguys Antwort behandelt, wie der weiße Pfeil "Selektor" auf dem Listenelement angezeigt wird;Ich werde versuchen, genauer auf Schatten einzugehen.Ein weiteres gutes Beispiel für die Verwendung von Hintergrundselektoren ist im Quellcode der Google IO 2011-App zu sehen. Sobald Sie die Quelle haben, sehen Sie sich das fragment_dashboard an.xml-Symbol-Selektoren.

Der Schattentrenner ist ein Verlauf, der auf die linke Seite einer Ansicht angewendet wird.Es gibt zwei Teile;

Zuerst der "Schatten" selbst:

res / schatten_links.XML

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
    android:angle="0"
    android:startColor="#55000000" 
    android:endColor="#00000000"
    />
</shape>

Dann, um es tatsächlich auf ein Layout anzuwenden:

layout/meine untere Ebene

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
<View
    android:layout_width="20dp"
    android:layout_height="fill_parent"
    android:background="@drawable/fragment_shadow_left" />
<ImageView
    android:id="@+id/imageview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true" />
</RelativeLayout>

Dies muss (meines Wissens nach) mit einem relativen Layout erfolgen.Wenn Sie ein lineares Layout verwenden, können Sie das gesamte LinearLayout in ein relatives Layout einbinden und dann das mit dem Farbverlauf hinzufügen.

Beachten Sie, dass, wenn Sie dies tun, der Farbverlauf <View> muss unter die gehen <LinearLayout>;andernfalls wird der Farbverlauf unter dem linearen Layout gezeichnet, sodass Sie ihn nicht sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top