【问题标题】:Tab layout scrolls till end automatically in RTL标签布局在 RTL 中自动滚动直到结束
【发布时间】:2018-06-13 11:05:45
【问题描述】:

我的应用程序中有一个选项卡布局。我正在动态添加标签。最初添加了两个选项卡,它工作正常,然后在一段时间后添加其他六个选项卡以响应网络调用。问题是当响应网络调用添加六个选项卡时,整个选项卡布局会自动滚动直到结束。

需要注意的几点:

  • 这只发生在 RTL 布局中,在 LTR 布局上它工作正常。

  • 如果我在获得网络调用响应中的所有选项卡后为 viewPager 设置适配器,那么它工作正常。

这里是代码。

tabLayout.setupWithViewPager(mViewPager);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
tabLayout.setSmoothScrollingEnabled(true);

pagerAdapter = new PagerAdapter(getChildFragmentManager(), getContext(), tabs);
viewPager.setAdapter(pagerAdapter);

if(savedInstanceState == null) {
    pagerAdapter.add(getTab1());
    pagerAdapter.add(getTab2());
    setCustomViews(getContext());
    loadMoreTabs(); //Network call
}

private void loadMoreTabs(){
   //in response of network call
   onResponse(){
       pagerAdapter.addAll(new ArrayList<Object>(response.body()));
       setCustomViews();  //Here whole tab layout scrolls till end
}

【问题讨论】:

    标签: android tabs android-viewpager android-tablayout android-tabs


    【解决方案1】:

    我找到了发生这种情况的原因。 实际上问题在于先设置适配器,然后在适配器中添加项目。 当适配器已经设置并且我们尝试在适配器中添加一些项目并调用 notifyDataSetChanged() 然后它将滚动到结束 [虽然不知道原因]。 解决方案是再次设置适配器,而不是在适配器中添加项目。我知道这不是一个好方法,但它有效。

    private void loadMoreTabs(){
       onResponse(){
           tabs.addAll(new ArrayList<Object>(response.body()));
           viewPager.setAdapter(pagerAdapter);
           setCustomViews();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 2011-01-21
      相关资源
      最近更新 更多