13

TabLayout设置有ViewPager,有很多选项卡MODE_SCROLLABLE和 keyline app:tabContentStart="72dp"

当用户选择一个选项卡时,TabLayout尝试将所选选项卡滚动到中心。我希望所选选项卡与关键线左对齐,而不是居中。可能吗?

Android 设计支持库 v22.2.0。

4

2 回答 2

8

不幸的是calculateScrollXForTab(), TabLayout 的方法是私有的,因此不能被子类替换。无论哪种方式,您都可以在项目中复制源 TabLayout,然后可能使用您的类对其进行扩展,并calculateScrollXForTab()像这样更改方法:

private int calculateScrollXForTab(int position, float positionOffset) {
   if (mMode == MODE_SCROLLABLE) {
      View final selectedChild = mTabStrip.getChildAt(position);
      // LoG.i ("scrollTo" String.valueOf ((int) selectedChild.getLeft()));
      return (int) selectedChild.getLeft();
   }
   return 0;
}

这将返回所选选项卡左侧的限制值,然后强制滚动到该值。如果选中,最右边的选项卡将保持固定位置,因为滚动会将滚动限制在子项的边界。

我尝试了它并且它有效,尽管我必须解决两个问题,其中一个 CompatTextView 在android.support.v7.internal.widget中找不到,并且方法setupWithViewPager()在我可用的源中不存在(我认为是版本问题)

于 2015-07-17T16:39:51.870 回答
4

如果我很好地理解了您的问题,您可以从选定的制表符位置中减去第一个制表符位置。然后,您只需将不同设置为此选定选项卡的位置。

于 2015-07-13T15:20:53.977 回答