最近做练习用到了HorizontalScrollView
和ViewPager
。头部导航是HorizontalScrollView
(里面放的是RadioButton。),新闻列表是ViewPager+listview
。要求是当滑动ViewPager
时,头部导航要滚动到指定栏目。
刚开始,想到用每一个按钮的长度和设备宽度做比较实现setScrollX()
,不过没做出来,希望有实现的大神可以分享思路或者代码。
同时,这里有一个特别简单的方式就能实现以上要求,即只需要在ViewPager
的滚动监听中设置滚动条就可以,效果也差强人意。
代码:
/*
这里是ViewPager中的滚动监听
*/
@Override
public void onPageSelected(int position) {
//获取滚动条
HorizontalScrollView hz = (HorizontalScrollView)findViewById(R.id.main_scrollView);
/*
radioButton.getWidth()为滚动挑中每一项的长度
通过循环,每切换到一个页面,滚动条都从默认状态(即最左边)滚动(radioButton.getWidth()* i)距离
*/
for (int i = 0; i <= position; i++) {
hz.setScrollX(radioButton.getWidth()* i);
}
}
还有第三方插件PagerSlidingTabStrip
可以实现,具体以后更新。