У меня есть общий фрагмент с 2 TextView внутри:Перемещение текста с ViewPager.PageTransformer - не удалось
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/background_image"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="150dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/title"
style="@style/IntroTitle"
android:text="TITLE"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/description"
style="@style/IntroDescription"
android:text="Description"
android:layout_marginTop="8dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"/>
</LinearLayout>
</RelativeLayout>
Этот формат используется IntroFragment и этот класс инстанциирован 5 раз в моей ViewPager (PageAdapter):
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
Bundle bundle = new Bundle();
switch (position) {
case 0:
fragment = IntroFragment.newInstance(getString(R.string.intro_title_screen_1),
getString(R.string.intro_desc_screen_1));
break;
case 1:
fragment = IntroFragment.newInstance(getString(R.string.intro_title_screen_2),
getString(R.string.intro_desc_screen_2));
break;
case 2:
...
в моей PageTransformer, я хочу сделать перевод на X для названия и для описания, но поведение этого кода является сумасшедшим:
mViewPager.setPageTransformer(true, new 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.
} else if (position <= 1) { // [-1,1]
TextView textview = (TextView) view.findViewById(R.id.description);
textview.setTranslationX((float) (-(1 - position) * 1.2 * pageWidth));
textview = (TextView) view.findViewById(R.id.title);
textview.setTranslationX((float) (-(1 - position) * 1.2 * pageWidth));
} else { // (1,+Infinity]
// This page is way off-screen to the right.
}
}
});
Возможно ли использовать общий фрагмент, подобный этому, и использовать файл PageTransformer для определенного виджета внутри (например, в моем случае Title и Description textview)?
Я просто хочу сделать перевод X быстрее (справа или слева зависит слайд-путь) по тексту и описанию текста.
Спасибо за помощь, ребята!
Благодарим за это указание. Но возможно ли найти представление по id с тем же идентификатором в этих 5 фрагментах? Потому что я использую тот же фрагмент 5 раз, чтобы заполнить мой ViewPager. – anthony
вид, который вы получаете как параметр, - это тот же вид, который вы возвращаете в onCreateView, – Blackbelt