TabLayout
设置为ViewPager
,有很多标签MODE_SCROLLABLE
和keyline app:tabContentStart="72dp"
。
当用户选择标签时,TabLayout
会尝试将所选标签滚动到中心。我希望选中的选项卡与keyline保持对齐,而不是居中。有可能吗?
Android设计支持库v22.2.0。
答案 0 :(得分:7)
不幸的是,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 和方法setupWithViewPager()
中找不到一个不存在的CompatTextView在我可以获得的来源(我认为是版本问题)
答案 1 :(得分:4)
如果我理解你的问题,你可以从选定的标签位置减去第一个标签位置。然后,您只需将其设置为此选定选项卡的位置。