2012-07-05 10 views
10

Ho implementato la diapositiva di spostamento utilizzando this. current implementationAggiungi ombra esterna per far scorrere la navigazione

Il contenuto dovrebbe ombra vicino al bordo destro della lista del menu; come expected result

Sto cercando di aggiungere un'ombra aggiungendo una vista al bordo sinistro del contenuto, ma non verrà visualizzato.

Qualsiasi suggerimento su come farlo sarà apprezzato.

+0

Questa domanda ha perso la sua importanza ora. Stavo cercando di farlo quando Facebook era l'unica app che utilizzava questo tipo di navigazione. Non c'erano librerie per creare la stessa interfaccia utente. C'erano pochi concetti e un codice mezzo cotto. Solo circa 8-9 mesi dopo le librerie hanno iniziato a spuntare con ogni tipo di personalizzazione e poi anche la risposta è arrivata. Non sono sicuro di poter accettare una delle risposte, non sono nemmeno sicuro ora. Questi sono troppo specifici per qualche biblioteca o approccio e sono ancora più vicini al concetto che stavo provando. – gandharva

risposta

1

So che questo post è piuttosto vecchio ma ho avuto problemi a trovare una soluzione, quindi ho pensato che potesse aiutare qualcuno se avessi postato il mio qui.

Volevo aggiungere una dissolvenza al nero sulla destra di questo semplice ListView.

<ListView 
    android:id="@+id/sideMenuList" 
    android:layout_width="300dp" 
    android:layout_height="match_parent"/> 

creato un file PNG con un gradiente using GIMP. Aggiungilo a/res/drawable. Il mio è stato chiamato fade_from_right.png

Circondato di ListView con un RelativeLayout. Assegna a RelativeLayout il colore di sfondo che vuoi che il tuo ListView abbia.

Aggiungi un'altra vista a destra di ListView. Imposta lo sfondo delle nuove visualizzazioni come "fade_from_right.png"

Questo è tutto.

<RelativeLayout 
    android:layout_height="match_parent" 
    android:layout_width="300dp" 
    android:background="@color/solarized_base02"> 

    <ListView 
     android:id="@+id/sideMenuList" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <View 
     android:layout_alignRight="@id/sideMenuList" 
     android:layout_width="5dp" 
     android:layout_height="match_parent" 
     android:background="@drawable/fade_from_right"/> 

</RelativeLayout> 
+0

Questo è davvero molto vecchio. @brett ha fatto la soluzione di cui sopra ha funzionato per te. Ora utilizzo https://github.com/jfeinstein10/SlidingMenu – gandharva

+0

Ho guardato usando SlidingMenu ma, essendo nuovo ad Android, voglio mantenere le cose il più semplici possibile, quindi sto usando il semplicissimo https: // github.com/dmitry-Zaitsev/AndroidSideMenu. Detto questo, la mia soluzione non è specifica per AndroidSideMenu, quindi può essere utilizzata per applicare un'ombra a qualsiasi tipo di vista. –

0

che cosa è la necessità di aggiungere un'altra vista con il ListView, non sarà perfetto penso .. Si può provare in questo modo giusto?

sm = getSlidingMenu(); 
sm.setShadowDrawable(R.drawable.shadowbar); 

poiché possiamo impostare alcune larghezza behindview e offset. questa opzione darà una buona occhiata, penso.

+0

Grazie a @Tamilselvan, ma questo è stato pubblicato prima dell'era dello SlidingMenu di jfeinstein (almeno prima di scoprirlo). – gandharva

11

ragazzi che conosco io sono in ritardo alla festa, ma ho avuto difficoltà a trovare una risposta a questo problema che è stato soddisfacente per me, così volevo solo condividere la mia soluzione a questo. Pugno, crea un drawbar navbar_shadow.xml e mettilo con il resto dei tuoi drawable. Tutto ciò che è, è un rettangolo con una sfumatura trasparente.

<?xml version="1.0" encoding="utf-8"?> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient android:startColor="#111" 
     android:endColor="#00000000"> 
    </gradient> 
    <size 
     android:height="@dimen/activity_vertical_margin" 
     android:width="5dp"> 
    </size> 
</shape> 

Quindi, ovunque si instanzia il cassetto, utilizzare la variabile DrawerLayout per collegarlo al cassetto.

mDrawerLayout.setDrawerShadow(R.drawable.navbar_shadow, Gravity.LEFT); 

Bam. Non è necessario disegnare linea per linea o includere risorse aggiuntive. È possibile utilizzare il proprio colore iniziale per abbinare il colore del cassetto, ma endColor dovrebbe rimanere # 00000000 in quanto è un nero trasparente.

+0

Perfetto! E cambiando il 'startColor',' endColor' funziona anche per il menu di destra. – madlymad

+0

bella soluzione ma sfortunatamente mi sembra di avere uno spazio tra l'ombra e il cassetto quando è completamente aperta – jiduvah

+0

Assicurarsi che l'estremità più scura del gradiente estraibile sia posizionata verso il lato del cassetto: questa soluzione è stata creata per un cassetto laterale di sollevamento. Se stai lavorando con un cassetto giusto, potresti aver bisogno di riverire i colori stard/finali. – C0D3LIC1OU5

Problemi correlati