【问题标题】:How to work with swipable tabs with bottom navigation如何使用带有底部导航的可滑动标签
【发布时间】:2017-01-17 05:53:57
【问题描述】:

您好,我一直在尝试使用带有底部导航栏的滑动选项卡,但是在重新选择选项卡时,滑动缺少并且没有显示。我正在从底部栏片段中调用滑动标签的片段。这是我的代码

    public class WalletFragment extends Fragment {
    private ViewPager viewPager;
    private WalletTabsAdapter mAdapter;
    PagerSlidingTabStrip wallettabs;
    // Tab titles

    public static WalletFragment newInstance(int instance) {
        Bundle args = new Bundle();
        args.putInt("input", instance);
        WalletFragment fragment = new WalletFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_wallet, container, false);
        // Initilization
        viewPager = (ViewPager) rootView.findViewById(R.id.walletpager);
        wallettabs = (PagerSlidingTabStrip) rootView.findViewById(R.id.wallettabs);
        mAdapter = new WalletTabsAdapter(getFragmentManager());
        viewPager.setAdapter(mAdapter);
        wallettabs.setViewPager(viewPager);
        /**
         * on swiping the viewpager make respective tab selected
         * */
        return rootView;
    }
}

【问题讨论】:

  • 是同时拥有选项卡和底部导航视图的可取方法吗?根据Material Guidelines
  • 只是说要谨慎使用
  • 以Youtube App中的收件箱标签为例

标签: android android-fragments android-bottomnav


【解决方案1】:

使用 getChildFragmentManager() 代替 getFragmentManager() 。见viewpager didnt show anything after change bottom navigation menu .我试过了,效果很好

【讨论】:

    【解决方案2】:

    试试这个

    viewPager = (ViewPager) rootView.findViewById(R.id.walletpager);
        wallettabs = (PagerSlidingTabStrip) rootView.findViewById(R.id.wallettabs);
        mAdapter = new WalletTabsAdapter(getFragmentManager());
        viewPager.setAdapter(mAdapter);
        wallettabs.setViewPager(viewPager);
        viewPager.setOffscreenPageLimit(2); // add this line
    

    如果底部导航有父视图分页器,那么您也可以使用它

    parrentViewPager.setOffscreenPageLimit(4);
    

    【讨论】:

    • @VishalArora,你可以试试这个github.com/ncapdevi/FragNav 吗?我认为它可能会有所帮助
    • 我正在使用这个 Fragnav 代码,它工作正常,但问题是当我尝试从 Fragnav 片段重新调用标签片段时它停止工作。只是想告诉你,我没有使用片段活动。
    • @VishalArora,您可以尝试调试您从 FragNav 中选择的当前选项卡的堆栈吗?
    • 我在当前选项卡上启用了调试,这就是结果。未连接适配器;跳过布局 mName=null mIndex=-1 mCommitted=false
    【解决方案3】:

    我也有这个问题。我的问题是我在 BottomNavigation 的两个不同选项卡中有两个 ViewPagers,它们都在布局中包含 ViewPager:

     <android.support.v4.view.ViewPager
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    

    在我更改其中一个的 ID 以区分之后,它起作用了!

     <android.support.v4.view.ViewPager
            android:id="@+id/container2" <!-- Changed ID -->
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-25
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多