簡體   English   中英

在使用PagerAdapter和ViewPager中的選項卡之間滑動時出現問題

[英]Problem in swipe between tabs in Use PagerAdapter and ViewPager

我將PagerAdapter用於ViewPager Adapter,沒有任何片段,只有選項卡的一種布局,可以,可以放入數據並...但是我在滑動時遇到了問題...它倒置了...我想正確向左但從左向右滑動...

ViewPagerAdapter.java

public class ViewPagerAdapter extends PagerAdapter {


  private static final String TAG = "ViewPagerAdapter";

  private Context context;
  private List<PersonItem> personItemList;

  public ViewPagerAdapter(Context context, List<PersonItem> personItemList) {
    this.context = context;
    this.personItemList = personItemList;
  }


  @Override
  public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
    return view == object;
  }


  @Override
  public int getCount() {
    return personItemList.size();
  }


  @Override
  public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    container.removeView((View) object);
  }


  @Nullable
  @Override
  public CharSequence getPageTitle(int position) {
    return personItemList.get(position).getTabTitle();
  }

  @NonNull
  @Override
  public Object instantiateItem(@NonNull ViewGroup container, int position) {

    LayoutInflater inflater = LayoutInflater.from(context);
    ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.fragment_layout, container, false);
    PersonItem personItem = personItemList.get(position);

    ImageView imgPerson = layout.findViewById(R.id.img_person);
    TextView txtPersonContent = layout.findViewById(R.id.txt_person_content);

    if (personItem.getImageUrl() != null) {
      Glide.with(context)
        .load(personItem.getImageUrl())
        .into(imgPerson);
    } else {
      imgPerson.setVisibility(View.GONE);
    }


    if (personItem.getContent() != null) {
      txtPersonContent.setText(personItem.getContent());
    }




    container.addView(layout);

    return layout;
  }

ViewPager layout.xml

<?xml version="1.0" encoding="utf-8"?>

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">


    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/coordinator"
        tools:context=".activity.PersonalityDetailsActivity">

        <com.google.android.material.appbar.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <include
                android:id="@+id/personality_toolbar"
                layout="@layout/personality_details_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?android:attr/actionBarSize"
                android:layout_marginTop="3dp"/>


            <com.google.android.material.tabs.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:background="?android:attr/selectableItemBackground"
                android:clickable="true"
                android:contextClickable="true"
                android:focusable="true"
                android:scrollbarSize="30dp"
                android:textAlignment="center"
                android:layoutDirection="rtl"
                app:tabGravity="fill"
                app:tabIndicatorColor="@color/colorAccent"
                app:tabMode="scrollable"
                app:tabPadding="3dp"
                app:tabPaddingEnd="10dp"
                app:tabSelectedTextColor="@color/colorAccent"
                app:tabTextColor="@android:color/white"/>

        </com.google.android.material.appbar.AppBarLayout>

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    </androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

在活動中設置ViewPager

//set adapter on View Pager
viewPagerAdapter = new ViewPagerAdapter(this, personItems);
viewPager.setAdapter(viewPagerAdapter);
viewPager.setCurrentItem(0);
tabLayout.setupWithViewPager(viewPager);

輸出在這里:

Gif鏈接

您也可以嘗試將android:layoutDirection="rtl"ViewPager

<androidx.viewpager.widget.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layoutDirection="rtl"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

並將當前頁面設置為最后一個,以防萬一:

viewPagerAdapter = new ViewPagerAdapter(this, personItems);
viewPager.setAdapter(viewPagerAdapter);
viewPager.setCurrentItem(viewPagerAdapter.getCount() - 1); // instead of 0
tabLayout.setupWithViewPager(viewPager);

試試這個

步驟1.更改“查看”尋呼機的旋轉方式,

viewpager.setRotationY(180);

第2步。然后再次更改片段容器的方向,該片段容器是viewpager的子元素,

view_pager_fragment_parent_viewgroup.setRotationY(180);

欲了解更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM