2012-08-14 14 views
6

Ho bisogno di fornire funzionalità come mostrato nelle immagini.Swap android view

enter image description here

Second View

In prima vista quando c'è viewpager in fondo. Quando l'utente scambia da destra a sinistra, il primo deve essere sostituito dal secondo. Quello che posso fare. Ma
La mia domanda è come fare una mezza porzione della prossima vista alla fine del lato destro e del lato sinistro.

i.è.'irst 'di prima vista e' Thir 'di seconda vista.

+0

meglio è possibile utilizzare la vista personalizzata – Ramkumar

risposta

6

È possibile utilizzare la galleria qui. All'interno di una galleria per ogni articolo, imposta i parametri di layout (larghezza) in base alle tue esigenze.

Il problema con la galleria è che non ruota gli articoli. Il che significa che una volta raggiunta la fine dell'elenco, non si ottiene il primo oggetto.

Ma c'è un trucco per venire anche quello. Tutto ciò che devi fare è impostare il numero di elenchi su un numero molto grande (INT_MAX) e nell'adattatore restituire accuratamente le viste corrette con il calcolo%.

Ciò garantirà che non si raggiungerà presto la fine della lista.

+2

La classe della galleria è deprecata ora ... – himanshu

+0

Aww ... questo è triste .. allora dovremo fare tutto il nostro circo dell'adattatore di visualizzazione. –

5

Io suggerirei di check-out la soluzione per la questione Android ViewPager with previous and next pages visible?) - utilizzando un margine di pagina negativo (via ViewPager.setPageMargin) vi permetterà di vedere più pagine alla volta (cioè, a sinistra ea destra del la tua pagina corrente).

+0

ma il problema è che non possiamo mettere due viewpager in singola attività o layout. – user861973

+0

@ user861973 - ah, il tuo post diceva "c'è viewpager in fondo", quindi perché pensavo che stavi già usando un ViewPager per la barra di scorrimento in basso e non anche per il contenuto principale.In tal caso, potrei suggerire di utilizzare [ViewPagerIndicator] (http://viewpagerindicator.com/) e in particolare [TabPageIndicator] (https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/library/src/ com/viewpagerindicator/TabPageIndicator.java). In tal caso, probabilmente si vorrà semplicemente utilizzare un margine negativo nel layout stesso per ottenere solo le immagini delle schede laterali. – ianhanniballake

2

Finalmente ho trovato una soluzione a questo. Stai utilizzando TitlePageIndicator dell'indicatore del pager di visualizzazione nel tuo progetto. Per ottenere questo effetto è necessario apportare poche modifiche alla classe TitlePageIndicator.
L'idea è di spostare il testo sul lato sinistro verso sinistra di una quantità pari alla metà della sua dimensione (potrebbe essere qualsiasi cosa) e il testo sul lato destro verso destra di una quantità pari alla metà della sua dimensione (potrebbe essere nulla).

Per impostare limiti ai testi sul lato sinistro clipViewOnTheLeft (...) metodo viene utilizzato e per impostare i limiti per il testo sul lato destro clipViewOnTheRight (...) metodo è usato. Qui è necessario apportare queste modifiche.

Ecco cosa dovete fare:

/** 
* Set bounds for the right textView including clip padding. 
* 
* @param curViewBound 
*   current bounds. 
* @param curViewWidth 
*   width of the view. 
*/ 
private void clipViewOnTheRight(RectF curViewBound, float curViewWidth, int right) { 
    curViewBound.right = right - mClipPadding + curViewWidth/2; 
    curViewBound.left = curViewBound.right - curViewWidth; 
} 

/** 
* Set bounds for the left textView including clip padding. 
* 
* @param curViewBound 
*   current bounds. 
* @param curViewWidth 
*   width of the view. 
*/ 
private void clipViewOnTheLeft(RectF curViewBound, float curViewWidth, int left) { 
    curViewBound.left = left + mClipPadding - curViewWidth/2; 
    curViewBound.right = mClipPadding + curViewWidth; 
} 

è necessario effettuare queste modifiche al file TitlePageIndicator.java.

+0

potresti postare commenti se questa soluzione ha funzionato o no? – karn