【问题标题】:ViewPager with tabLayout - Child Fragment takes time to changeViewPager with tabLayout - Child Fragment 需要时间来改变
【发布时间】:2018-02-23 10:04:16
【问题描述】:

** View Pager with tabLayout 在 View Pager 适配器的底部,用于将片段切换到每个选项卡。问题是功能工作正常。但是选项卡开关中的片段在更改为另一个片段时会显示混蛋。**

Fragment 使用分离的线程调用 api。

private void createViewPager(ViewPager viewPager) {
    TabLayoutViewPagerAdapter adapter = new TabLayoutViewPagerAdapter(getSupportFragmentManager());
    adapter.addFrag(homePageFragment);
    adapter.addFrag(orderHistoryFragment);
    adapter.addFrag(supportFragment);
    adapter.addFrag(new AccountDetailsFragment());
    viewPager.setAdapter(adapter);
    viewPager.setOffscreenPageLimit(viewPager.getAdapter().getCount());
}

ViewPager 适配器

public class TabLayoutViewPagerAdapter extends FragmentStatePagerAdapter {

    private final List<Fragment> mFragmentList = new ArrayList<>();

    public List<String> getmFragmentTitleList() {
        return mFragmentTitleList;
    }

    private final List<String> mFragmentTitleList = new ArrayList<>();

    public TabLayoutViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

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

    public void addFrag(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    public void addFrag(Fragment fragment) {
        mFragmentList.add(fragment);
    }
}

活动 xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/tabs"
            android:background="@color/white"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="55dp"
            android:layout_alignParentBottom="true"
            android:layout_gravity="bottom"
            android:background="@drawable/tablayout_bg"
            app:tabIndicatorColor="@color/zotocolor"
            app:tabMode="fixed"
            app:tabSelectedTextColor="@color/zotocolor"
            app:tabTextColor="@color/black" />

    </RelativeLayout>

</android.support.design.widget.CoordinatorLayout>

【问题讨论】:

    标签: android xml android-fragments android-viewpager


    【解决方案1】:

    更改 viewpager.setOffscreenPageLimit(2) 或默认设置为 1 并检查加载时间,因为您不需要将每个片段都保留在内存中,这会导致在视图寻呼机中加载响应缓慢。

    在 viewpager https://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit%28int%29 中查看有关 setOffscreenPagLimit 的更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      相关资源
      最近更新 更多