1、所需工具
(1)第三方开源库文件Android-ViewPagerIndicator-master文件夹下的library
(2)模仿库文件的示例工程实现:导入Android-ViewPagerIndicator-master文件夹下的Sample工程,导入后的工程名:ListSample,查
看SampleTabsDefault.java文件。
2、具体实现步骤
(1)将我们的工程关联上库文件,删除工程中的v4包以解决v4包冲突的问题
(2)SampleTabsDefault.java继承自FragmentActivity,是一个Activity,查看其引用的布局文件,内容如下:
其中有一个TabPageIndicator和一个ViewPager,TabPageIndicator指针控件,ViewPager在使用时使用我们自己所需的ViewPager,在我们工程中需要添加TabPageIndicator的Activity布局文件中添加相应代码,ViewPager控件放在TabPageIndicator控件的下方
(3)在Activity中找到TabPageIndicator和ViewPager对象
(4)在ViewPager适配器中添加getPageTitle(int position)方法显示TabPageIndicator内容
(5)给ViewPager对象设置适配器pager.setAdapter(PagerAdapter pagerAdapter)
(6)使用setViewPager()方法将TabPageIndicator和ViewPager绑定,如:indicator.setViewPager(pager)。绑定操作要放在添加适配器之后执行
(7)此时运行我们的工程已经能显示TabPageIndicator的内容,但是滑动ViewPager是看不到TabPageIndicator改变的效果,需要给这个Activity设置一个样式。在示例工中AndroidManifest文件中找到对应的Activity,将设置主题的代码复制到我们工程中的AndroidManifest的Activity下,此时就可以看到效果。主题可以更具我们的需要进行修改,以显示出不同的效果。
3、添加TabPageIndicator指针
(1)在TabPageIndicator的指针集合中添加需要添加的指针内容
(2)更新:indicator.notifyDataSetChanged();
( 3 ) 添加指针对应的ViewPager页
(4)更新:pager.notifyDataSetChanged();
(5)添加后直接定位到新添加的页:indicator.setCurrentItem(list.size()-1)
4、例
(1)第三方开源库文件Android-ViewPagerIndicator-master文件夹下的library
(2)模仿库文件的示例工程实现:导入Android-ViewPagerIndicator-master文件夹下的Sample工程,导入后的工程名:ListSample,查
看SampleTabsDefault.java文件。
2、具体实现步骤
(1)将我们的工程关联上库文件,删除工程中的v4包以解决v4包冲突的问题
(2)SampleTabsDefault.java继承自FragmentActivity,是一个Activity,查看其引用的布局文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/indicator"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
其中有一个TabPageIndicator和一个ViewPager,TabPageIndicator指针控件,ViewPager在使用时使用我们自己所需的ViewPager,在我们工程中需要添加TabPageIndicator的Activity布局文件中添加相应代码,ViewPager控件放在TabPageIndicator控件的下方
(3)在Activity中找到TabPageIndicator和ViewPager对象
(4)在ViewPager适配器中添加getPageTitle(int position)方法显示TabPageIndicator内容
(5)给ViewPager对象设置适配器pager.setAdapter(PagerAdapter pagerAdapter)
(6)使用setViewPager()方法将TabPageIndicator和ViewPager绑定,如:indicator.setViewPager(pager)。绑定操作要放在添加适配器之后执行
(7)此时运行我们的工程已经能显示TabPageIndicator的内容,但是滑动ViewPager是看不到TabPageIndicator改变的效果,需要给这个Activity设置一个样式。在示例工中AndroidManifest文件中找到对应的Activity,将设置主题的代码复制到我们工程中的AndroidManifest的Activity下,此时就可以看到效果。主题可以更具我们的需要进行修改,以显示出不同的效果。
3、添加TabPageIndicator指针
(1)在TabPageIndicator的指针集合中添加需要添加的指针内容
(2)更新:indicator.notifyDataSetChanged();
( 3 ) 添加指针对应的ViewPager页
(4)更新:pager.notifyDataSetChanged();
(5)添加后直接定位到新添加的页:indicator.setCurrentItem(list.size()-1)
4、例
public class MainActivity extends FragmentActivity {
private TabPageIndicator indicator;
private ViewPager pager;
private ArrayList<String> arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_tabs);
indicator = (TabPageIndicator) findViewById(R.id.indicator);
pager = (ViewPager) findViewById(R.id.pager);
arrayList = new ArrayList<String>();
final String[] CONTENT = new String[] { "Recent", "Artists", "Albums", "Songs", "Playlists", "Genres" };
for (int i = 0; i < CONTENT.length; i++) {
arrayList.add(CONTENT[i]);
}
PagerAdapter pagerAdapter = new PagerAdapter();
pager.setAdapter(pagerAdapter);
indicator.setViewPager(pager);
}
class PagerAdapter extends android.support.v4.view.PagerAdapter{
@Override
public CharSequence getPageTitle(int position) {
return arrayList.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arrayList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
TextView textView = new TextView(getApplicationContext());
textView.setText(arrayList.get(position));
container.addView(textView);
return textView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
}