在项目中引用ViewPageIndicator的时候可能会出现 Sha1错误
原因是 多个项目中都存在v4的支持包 哪里在引用库的时候就会出现sha1的错误
解决方法 把所有项目中的v4支持包统一 可以这样做
先移除原来的引用,把两个项目的的v4支持包都删除,从adt里面复制v4支持包到两个项目里面,这样就保持两个项目的v4包相同了。
这里的示例是演示ViewPageIndicator滑动会对应viewpager相应的界面,viewpager滑动也回对应ViewPageIndicator相应的标题
在布局中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<!-- 可以滑动的头 -->
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/tabPageIndicator"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<!-- 标签页面 -->
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
在activity中,可以分为这几个步骤
1、这里通过ViewUtils(xUtils框架)找到ViewPageIndicator和viewpager控件
2,、给viewpager设置adapter
3、提供数据给adapter,处理adapter里的方法
4、通过setViewPager()方法把ViewPageIndicator和viewpager关联起来
5、设置ViewPageIndicator头文字和viewpager文字一样
public class MainActivity extends Activity {
@ViewInject(R.id.tabPageIndicator)
public TabPageIndicator tabPageIndicator;
@ViewInject(R.id.vp)
public ViewPager vp;
private String[] names = new String[]{"足球","篮球","羽毛球","斯诺克","兵兵球","排球","F1"};
private List<TextView> views;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注入
ViewUtils.inject(this);
//执行数据的初始化
views = new ArrayList<TextView>();
for(String name:names){
TextView tv = new TextView(this);
tv.setText(name);
tv.setTextColor(Color.RED);
tv.setTextSize(22);
tv.setGravity(Gravity.CENTER);
views.add(tv);
}
MyPagerAdapter adapter = new MyPagerAdapter();
vp.setAdapter(adapter);
//需要把ViewPager和TabPagerIndiactor绑定,
//如果想设置TabPagerIndiactor的文字(页面头的信息),这时会调用getPageTitle()方法
tabPageIndicator.setViewPager(vp);
}
private class MyPagerAdapter extends PagerAdapter{
//获取页面的头信息
@Override
public CharSequence getPageTitle(int position) {
return names[position];
}
//页面的数量
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
//实例化页面
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = views.get(position);//获取要显示的View
vp.addView(view);//把要显示的View添加给ViewPager
return view;
}
//销毁页面
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = views.get(position);//获取要销毁的View
vp.removeView(view);
}
}
}
在AndroidMenifest中设置ViewPageIndicator的主题样式
android:theme="@style/Theme.PageIndicatorDefaults"