TabLayout selected tab gravity

时间秒杀一切 提交于 2019-12-01 03:15:39

Unfortunately the method calculateScrollXForTab() of TabLayout is private and then not replaceable by subclasses. Either way you can copy the source TabLayout in your project, then possibly extending it with your class, and change the method calculateScrollXForTab() like this:

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;
}

This returns the value of the limit on the left of the tab selected, then scrolling is forced to that value. The extreme right tabs will remain fixed in position if selected because the scroll clamps the scrolling to the bounds of the child.

I tried it and it works, although I had to solve two problems with one CompatTextView not found in android.support.v7.internal.widget and method setupWithViewPager() that does not exist in the source available to me (I think a matter of version)

If I understood your question well, you can subtract the first tab position from the selected tab position. Then, you just set the different as a position for this selected tab.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!