TabLayout
是使用 ViewPager
设置的,具有许多选项卡、MODE_SCROLLABLE
和关键线 app:tabContentStart="72dp"
。
当用户选择一个选项卡时,TabLayout
会尝试将所选选项卡滚动到中心。我希望所选选项卡左对齐关键线,而不是居中。这可行吗?
Android 设计支持库 v22.2.0。
TabLayout
是使用 ViewPager
设置的,具有许多选项卡、MODE_SCROLLABLE
和关键线 app:tabContentStart="72dp"
。
当用户选择一个选项卡时,TabLayout
会尝试将所选选项卡滚动到中心。我希望所选选项卡左对齐关键线,而不是居中。这可行吗?
Android 设计支持库 v22.2.0。
很不幸,TabLayout的calculateScrollXForTab()
方法是私有的,因此无法被子类替换。不过你可以将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;
}
这将返回所选标签左侧的限制值,然后强制滚动到该值。如果选择极右侧的标签,则它们将保持固定位置,因为滚动夹紧到子元素的边界。
我尝试了一下,它可以正常工作,尽管我不得不解决两个问题,一个是在android.support.v7.internal.widget中找不到CompatTextView,另一个是方法setupWithViewPager()
在我可用的源代码中不存在(我认为这是版本问题)。
app:tabContentStart
声明。 - Dima Kornilov