Mam ViewPager, w którym każdy z jego widoków reprezentuje kartę na talii. Każda karta ma cień na ramce przy użyciu marginesu ViewPager:Margines ViewPager w transformacji PageTransformer
cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels/20);
cardsViewPager.setPageMarginDrawable(R.drawable.shadow);
Działa zgodnie z oczekiwaniami.
Ale, jeśli mogę dodać PageTransformer tak, że karty po prawej stronie stos na górze kart po lewej stronie:
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);
}
}
}
}
zrobić to poprzez:
cardsViewPager.setPageTransformer(false, new ScalePageTransformer(cardsViewPager));
Ale teraz , margines nie pojawia się. Gdybym miał efekt pomniejszenia w PageTransformer, mogę zobaczyć, kiedy aktualna karta jest zmniejszana, że margines pobierany jest poniżej aktualnej karty na ekranie. Oto pic, aby opisać to, co się dzieje:
Niebieska karta jest swiped od prawej do lewej na górze czerwoną kartkę. Ponieważ czerwona kartka ma transformację skali, widzimy margines do rysowania w kolorze czarnym za nim.
Czy istnieje sposób na to, aby wyciągnąć margines znajdujący się na czerwonej karcie? Czy nie powinno to być zachowanie domyślne?
skopiuj wklej z witryny dla programistów Androida nikomu nie pomoże. spróbuj zrozumieć problem, a następnie dodaj komentarz. – George