2012-06-15 8 views
5

Mi piace il design dell'app Gmail per Android e mi chiedo se lo hanno creato utilizzando un approccio standard.Layout/controllo Android per mostrare "freccia" dalla scheda aperta a Elenco/Menu?

Immagino che usi frammenti, uno per il menu sul lato sinistro e un altro per il contenuto. Ma quello che mi sembra davvero interessante qui è questa piccola freccia che punta dal contenuto all'elemento selezionato. Dà l'impressione che la pagina dei contenuti sia posizionata sopra il resto.

È qualcosa di simile disponibile fuori dalla scatola?

enter image description here

+0

Definitivamente non disponibile nello stack UI Android standard. Inoltre, l'app sembra sospettosamente simile all'HTML. Ad ogni modo, il triangolo non fa parte del riquadro di destra: è un elemento visibile dinamicamente sull'elemento della lista. Così come il confine rotto. –

risposta

1

sembra che egli sta usando 2 ListViews, e per quanto quella freccia non credo che sia disponibile. Ho guardato un sacco di funzioni 4.0 ma non vedo nulla di simile. Sto pensando che potrebbe essere parte dello sfondo per il giusto ListView?

+0

Nah, deve essere una vista elenco (a sinistra) e una vista personalizzata (a destra). È troppo difficile mantenere sincronizzate due visualizzazioni elenco. Intendo dire che sarebbe troppo difficile posizionare la freccia dalla seconda vista elenco. –

2

Penso che stiano usando android: windowContentOverlay sul lato sinistro elemento selezionato in cui mostrano il disegnatore "a freccia". Il drawable dovrebbe avere android: gravity = "right" quindi è posizionato correttamente.

Ovviamente, è necessario perfezionare il layout per renderlo "reale", ma ho ottenuto alcuni effetti simili utilizzando questa tecnica.

+0

Aggiungerò a quanto sopra che il drawable dovrebbe contenere anche un'ombra (se ce n'è una nel mezzo, non può uscire dallo screenshot), in modo tale che si fonderà perfettamente con il separatore e sembrerà che sia un continuazione di esso. –

+0

Supponendo che il pannello di sinistra sia una ListView, come mantenere l'elemento selezionato evidenziato dopo il suo rilascio? Ho provato a usare il selettore, ma lo tiene solo evidenziato quando si tiene premuto l'elemento. – gisek

+0

Lo so. Questo non funziona. Quello che ho fatto è stato avere la mia vista oggetto (quindi una riga di lista) implementare Checkable e quindi usare setItemChecked di ListView (posizione, true) quando volevo che un oggetto si comportasse diversamente. Nella tua vista dovresti cambiare il colore di sfondo della vista/disegnabile a ciò che ti serve. Ho anche usato un membro booleano mChecked nella mia vista, per un più facile monitoraggio dello stato. Prestare attenzione a ** sempre * chiamare setItemChecked quando si desidera che l'elemento cambi stato. L'impostazione di mChecked farà sì che la tua vista si comporti in modo errato a causa del riciclaggio degli articoli.Fammi sapere come va. –

0

Layout multiparto: lato sinistro un frammento di lista (o frammento con una riciclabilità), a destra un frammento con la vista del contenuto (scrollview, listview, recyclerview, webview, ecc.).

Se l'elemento a sinistra è selezionato (modello a selezione singola), il selettore utilizza un diverso drawable per lo stato selezionato e aggiorna il contenuto a destra. Forse l'elemento listview ha un padding aggiuntivo all'estremità per evitare sovrapposizioni con il drawable bitmap della freccia che viene utilizzato all'interno del selettore.

Su Lollipop potrebbe esserci anche un ulteriore effetto di ripple sulla parte superiore (disegnare il selettore in cima o utilizzare uno specifico drawable-v21 con ripple).

L'effetto di ombreggiatura può essere ottenuto con un framelayout nel frammento sinistro (il primo membro è il listview, il secondo membro è una vista che visualizza l'ombra (gradiente disegnabile) come sfondo con gravità impostata per terminare).

Problemi correlati