各ビューがデッキ上のカードの表現である ViewPager があります。各カードには、ViewPager マージンを使用して境界線に影があります。
cardsViewPager.setPageMargin(getResources().getDisplayMetrics().widthPixels / 20);
cardsViewPager.setPageMarginDrawable(R.drawable.shadow);
そして、それは期待どおりに機能します。
しかし、右側のカードが左側のカードの上に積み重なるように PageTransformer を追加すると、次のようになります。
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);
}
}
}
}
私はこれを行います:
cardsViewPager.setPageTransformer(false, new ScalePageTransformer(cardsViewPager));
しかし今、マージンは表示されません。PageTransformer にズームアウト効果があった場合、現在のカードが縮小されているときに、margin drawable が画面上の現在のカードの下にあることがわかります。何が起こっているかを説明するための写真を次に示します。
青いカードが赤いカードの上に右から左にスワイプされています。赤いカードにはスケール変換があるため、その後ろに黒い描画可能な余白が表示されます。
マージンドローアブルをレッドカードの上に強制する方法はありますか? これはデフォルトの動作ではないでしょうか?