通常我们使用下面的方式来选中指定的Tab
tabLayout.getTabAt(tabLayout.getTabAt(tabPosition)).select();
但是当tab数量非常多, 要选中的tab在屏幕之外时, 就无法显示被选中的tab了, tab虽然是被选中状态了, 但是被选中的tab还在屏幕外面, 这时候是不可见状态.
要解决这个问题看遍了TabLayout的api也没有找到解决方法, 然后也百度了下, 发现都是通过tabLayout.smoothScrollTo()方法来滚动到选中的tab处, 这里有个问题就是滚动的距离不好计算, 且不是非常准确, 通过这个方式滚动受到启发, 发现根本不用这样, 直接使用tabLayout.select()方法也可以进行移动, 只是需要在post方法中执行才起作用.
java代码
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.getTabAt(tabLayout.getTabAt(tabPosition)).select();
}
});
kotlin代码
tabLayout.post{ tabLayout.getTabAt(tabPosition)?.select()}
至于为啥要在post中才有移动效果, 可移步下面这篇文章中了解: