我在ViewPager中使用ActionBar.Tabs,看起来像
我实施了ActionBar.TabListener
和ViewPager.OnPageChangeListener
来支持当用户在ViewPager中滑动页面时,标签指示符会相应更改(蓝色指示符将移动到相应的标签页)。
现在我意识到蓝色指示器在没有任何动画的情况下发生变化,并且看起来不太好。 (当我从tab1滑动到tab2时,蓝色指示符在tab1下消失并出现在tab2下面)。有没有办法改变它,以便当我切换标签时,蓝色标签指示在标签之间平滑移动?
答案 0 :(得分:0)
使用设计支持库中的TabLayout
类:
https://developer.android.com/reference/android/support/design/widget/TabLayout.html
它有一个setupWithViewPager
可以轻松地将其与ViewPager
连接,并且它有一个滑动指示条。
答案 1 :(得分:0)
在我的情况下,它是由于TabSelectedListener
而出现的。在tab_layout.addOnTabSelectedListener()
中,我改写了onTabSelected
方法,在该方法中我没有延迟地打开了另一个活动。
view.tab_layout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(tab: TabLayout.Tab?) {
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
}
override fun onTabSelected(tab: TabLayout.Tab?) {
if (tab?.position == 1) {
MapsActivity.showScreen(this@ThisFragment)
}
}
})
我拖延了那个方法:
override fun onTabSelected(tab: TabLayout.Tab?) {
if (tab?.position == 1) {
// Show tab animation and open an activity.
view.tab_layout.postDelayed({
// This check is optional.
if (isAdded && view.tab_layout.selectedTabPosition == 1) {
MapsActivity.showScreen(this@YourFragment)
}
}, 250)
}
}
我也尝试更改持续时间值,但不知道如何(无济于事):
view.tab_layout.animation = object: Animation() {}
view.tab_layout.animation.duration = 1000
view.tab_layout.layoutAnimation = LayoutAnimationController(object: Animation() {})
view.tab_layout.layoutAnimation.delay = 1000f
view.tab_layout.layoutAnimation.animation.duration = 1000