Domanda

Ho un layout simile all'App per iCS Gmail per tablet (ListFragment a sinistra e contenuto a destra) e mi stavo chiedendo come potevo andare a costruire i layout che c'è un separatore d'ombra tra i due frammenti (Come nell'app Gmail, mostrato sotto)

. Basta guardare quella bella ombra!

Inoltre, poiché ciò è applicabile a questa domanda, come posso avere quel bel marcatore triangolo / freccia nel layout dell'elemento dell'elenco attivo?Presumo di implementare questo, la stessa ListView deve mentire sopra The Shadow "Layer", ma non ho idea di come crearlo.

È stato utile?

Soluzione

Solo per far sapere a tutti (perché sembra esserci una mancanza di informazioni là fuori su questo argomento), questo è ottenuto all'interno del selettore di sfondo XML della vista delle righe di elenco individuali.Ad esempio, questo è il layout della schermata principale,

<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>
.

Ma la magia arriva nel 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>
.

Definire questi come disegnabili a 9 patch come questa, è possibile che ogni elemento di elenco contribuisca della sua larghezza di ombra a quella linea nel mezzo, e quando è attivato, quel segmento dell'ombra verrà sostituito da una freccia.Spero che questo aiuti qualcuno, come è sicuro mi ha aiutato!

Altri suggerimenti

Sto cercando di fare la stessa cosa che stai cercando di fare; Creare un effetto che un frammento è "più vicino" di un altro.

La risposta di Roboguy gestisce come avere il "selettore" della freccia bianca sulla voce dell'elenco; Cercherò di essere più specifico sulle ombre. Un altro buon esempio dell'uso dei selettori di sfondo può essere visto nel codice sorgente dell'app di Google Io 2011. Una volta che hai la fonte, guarda i selettori di icone framment_dashboard.xml.

Il separatore dell'ombra è un gradiente, applicato sul lato sinistro di una vista. Ci sono due parti;

Prima, la "Shadow" stessa:

.

res / shadow_left.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>
.

Quindi, per applicarlo effettivamente a un layout:

.

Layout / My_Lower_layer

<?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>
.

Questo deve essere fatto con un layout relativo (a mia conoscenza). Se stai utilizzando un layout lineare, puoi avvolgere l'intero linearlayout all'interno di un layout relativo, quindi aggiungere il gradiente.

Nota che, se lo fai, il gradiente <View> deve andare sotto il <LinearLayout>; Altrimenti, il gradiente verrà disegnato sotto il layout lineare, quindi non lo vedrai.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top