1.//自定义的HorizontalScrollView
public class MyHorizatalScrollView extends HorizontalScrollView implements OnClickListener {
private String[] titles;
List<View> list = new ArrayList<View>();
private LinearLayout linearLayout;
private ViewPager viewPager;
public MyHorizatalScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView();
}
public MyHorizatalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public MyHorizatalScrollView(Context context) {
super(context);
initView();
}
// 首先创建LinearLayout
private void initView() {
linearLayout = new LinearLayout(getContext());
// 把LinearLayout布局添加到HorizatalScrollView中
this.addView(linearLayout);
}
// 将布局添加到LinearLayout
public void setTitles(String titles[]) {
this.titles = titles;
list.clear();
for (int i = 0; i < titles.length; i++) {
View view = View.inflate(getContext(), R.layout.horizatal_item, null);
TextView tv_tab = (TextView) view.findViewById(R.id.tv_tab);
list.add(view);
tv_tab.setText(titles[i]);
if (i == 0) {
tv_tab.setTextColor(Color.RED);
} else {
tv_tab.setTextColor(Color.BLACK);
}
view.setId(i);
view.setOnClickListener(this);
LinearLayout.LayoutParams layoutParams = LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
// 将布局添加到linearLayout
linearLayout.addView(view, layoutParams);
}
}
public void setViewPager(ViewPager viewPager) {
this.viewPager = viewPager;
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
setCurrentItem(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
// 设置点击时的条目
public void setCurrentItem(int position) {
this.setScrollBarStyle(HorizontalScrollView.GONE);
int width = linearLayout.getChildAt(position).getWidth();
this.scrollTo(width * position, 0);
for (int i = 0; i < titles.length; i++) {
View view = list.get(i);
TextView tv_tab = (TextView) view.findViewById(R.id.tv_tab);
if (position == i) {
viewPager.setCurrentItem(i);
tv_tab.setTextColor(Color.RED);
} else {
tv_tab.setTextColor(Color.BLACK);
}
}
}
// 点击事件
@Override
public void onClick(View v) {
setCurrentItem(v.getId());
}
}
2.然后在Activity的中获取HorizontalScrollView的id
//获取控件的id
MyHorizatalScrollView myhorizatalscroll = (MyHorizatalScrollView) findViewById(R.id.myhorizatalscroll);
myhorizatalscroll.setTitles(titles);
myhorizatalscroll.setViewPager(viewPager);