昨天遇到一个很奇葩的问题,viewpager通过按钮点击方式切换界面竟然没有效果。
现象:viewpager里面有两页,一页是播放列表,另一页是歌手信息。默认显示的是歌手信息。需求希望可以通过滑动的方式切换到播放列表,也可以通过一个叫“播放列表”的按钮点击切换到播放列表。通过点击按钮可以第一遍可以正常切换,第二遍就有时失效了。搞了半天都想不通是什么问题。后来经过同事指点,是viewpager在切换的过程其实是一个动画的过程。如果通过按钮来操作的话,时间上面比滑动的时间短,动画还没有执行完毕是不会切的(个人感觉啊)。后来在监听事件方法
onPageSelected中加了一个延时操作就成功了。不用延时太长,10毫秒就差不多了。
@Override
public void onPageSelected(final int pos) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// 逻辑处理
}
}, 10);