我一直在关注本教程,将 ViewPager.Transformer 应用于我的 ViewPager。您会注意到 Chris Basha 只为 viewpager 中的 2 个片段编写了教程 - 我想在我的 viewpager 中使用 3 个片段:
我只想将 2 textViews 从我的 viewpager 内的片段右侧移动到左侧。我的浏览器中有 3 个片段。
这是我的代码:
private class TranslationPageTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <=1) { // [-1,1]
hello.setTranslationX((float) (-(1-position) * 1.5 * pageWidth));
howareyou.setTranslationX((float) (-(1-position) * 0.5 * pageWidth));
}
else {
view.setAlpha(1);
}
}
}
这是viewpager的第1页视图:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity$PlaceholderFragment">
<TextView style="?android:textAppearanceMedium"
android:padding="16dp"
android:lineSpacingMultiplier="1.2"
android:layout_gravity="right"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hello"
/>
<TextView style="?android:textAppearanceMedium"
android:padding="16dp"
android:lineSpacingMultiplier="1.2"
android:layout_gravity="right"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/howareyou"
/>
</LinearLayout>
当我从第 1 页移动到第 2 页并再次返回时,上面的代码就像一个魅力。文本从右向左移动,然后再次返回,并以不同的速度加速到浏览器的移动。
当我从第 1 页 - 第 2 页 - 第 3 页移动,然后再次从第 3 页 - 第 2 页 - 第 1 页移动时,两个文本视图似乎没有回到原来的位置。事实上,包含“你好”这个词的文本视图甚至不会显示“你好吗?” 不再对齐:
从 page1-2-3 到 page3-2-1 时,如何让两个 textViews 回到原来的位置?