Ho un ViewPager in cui ognuna delle sue viste è una rappresentazione della carta su un mazzo. Ogni carta ha un ombra sul confine con il margine di ViewPager:Margine ViewPager nelle trasformazioni di PageTransformer
cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels/20);
cardsViewPager.setPageMarginDrawable(R.drawable.shadow);
E funziona come previsto.
Ma, se posso aggiungere un PageTransformer in modo che le carte sulla destra si impilare le carte a sinistra:
public class ScalePageTransformer implements PageTransformer {
private final ViewPager mViewPager;
public ScalePageTransformer(ViewPager viewPager) {
this.mViewPager = viewPager;
}
@Override
public void transformPage(View page, float position) {
if (position <= 0) {
int pageWidth = mViewPager.getWidth();
final float translateValue = position * -pageWidth;
if (translateValue > -pageWidth) {
page.setTranslationX(translateValue);
} else {
page.setTranslationX(0);
}
}
}
}
Faccio questo:
cardsViewPager.setPageTransformer(false, new ScalePageTransformer(cardsViewPager));
Ma ora , il margine non appare. Se ho avuto un effetto di zoom out su PageTransformer, posso vedere quando la scheda corrente viene ridimensionata, che il margine drawable è sotto la scheda corrente sullo schermo. Ecco una foto per descrivere quello che sta succedendo:
La carta blu è essere fregato da destra a sinistra in cima al cartellino rosso. Poiché il cartellino rosso ha una trasformazione di scala, possiamo vedere il margine disegnabile in nero dietro di esso.
C'è un modo per forzare il margine drawable sopra al cartellino rosso? Questo non dovrebbe essere il comportamento predefinito?
copia incolla dal sito web di sviluppatori Android non aiuterà nessuno. prova a capire il problema quindi pubblica un commento. – George