ViewPagerIndication指针
头部的布局文件
在MainActivity
package com.zhy.csdndemo;
import com.viewpagerindicator.TabPageIndicator;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity
{
private TabPageIndicator mIndicator ;
private ViewPager mViewPager ;
private FragmentPagerAdapter mAdapter ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到Viewpagerindicator控件
mIndicator = (TabPageIndicator) findViewById(R.id.id_indicator);
mViewPager = (ViewPager) findViewById(R.id.id_pager);
mAdapter = new TabAdapter(getSupportFragmentManager());
//设置它的适配器
mViewPager.setAdapter(mAdapter);
//把Viewpager添加到我们的Indicator中
mIndicator.setViewPager(mViewPager, 0);
}
TabAdapter适配器
package com.zhy.csdndemo;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class TabAdapter extends FragmentPagerAdapter
{
public static final String[] TITLES = new String[] { "业界", "移动", "研发", "程序员杂志", "云计算" };
public TabAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position)
{
MainFragment fragment = new MainFragment(position);
return fragment;
}
@Override
public CharSequence getPageTitle(int position)
{
return TITLES[position % TITLES.length];
}
@Override
public int getCount()
{
return TITLES.length;
}
}
}
MainFragment
package com.zhy.csdndemo;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
@SuppressLint("ValidFragment")
public class MainFragment extends Fragment
{
private int position = 0;
//创建有参构造方法得到适配器中传来的索引
public MainFragment(int position)
{
this.position = position;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.tab_item_fragment_main, null);
TextView tip = (TextView) view.findViewById(R.id.id_tip);
tip.setText(TabAdapter.TITLES[position]);
return view;
}
}
补充
1.)
也可以通过在适配中的getItem中用bundle方法传递
public Fragment getItem(int arg0)
{
//新建一个Fragment来展示ViewPager item的内容,并传递参数
MainFragment fragment = new MainFragment();
Bundle args = new Bundle();
args.putString("arg", TITLE[position]);
fragment.setArguments(args);
return fragment;
}
在MainFragment中如下获取数据
//获取Activity传递过来的参数
Bundle mBundle = getArguments();
String title = mBundle.getString("arg");
mTextView.setText(title);
2)。
也可以直接在getitem中直接返回我们要传递的MainFragment
public Fragment getItem(int arg0) {
return MainFragment.getInstance(path.get(arg0));
}
然后再MainFragment定义出我们的getInstance方法
public static Fragment getInstance(String string) {
MainFragment cf = new MainFragment();
Bundle budle = new Bundle();
budle.putString("path", string);
cf.setArguments(budle);
return cf;
}
把数据传递到MainFragment
//得到bundle
Bundle bundle = getArguments();
//得到传来的参数
String path = bundle.getString("path");
直接进行对传来的参数进行业务逻辑的执行
在styles.xml中自定义Theme
<style name="MyTheme" parent="AppBaseTheme">
<item name="vpiTabPageIndicatorStyle">@style/MyWidget.TabPageIndicator</item>
<item name="android:windowBackground">@drawable/init_pic</item>
<item name="android:windowNoTitle">true</item>
<item name="android:animationDuration">5000</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="MyWidget.TabPageIndicator" parent="Widget">
<item name="android:gravity">center</item>
<item name="android:background">@drawable/vpi__tab_indicator</item>
<item name="android:paddingLeft">22dip</item>
<item name="android:paddingRight">22dip</item>
<item name="android:paddingTop">8dp</item>
<item name="android:paddingBottom">8dp</item>
<item name="android:textAppearance">@style/MyTextAppearance.TabPageIndicator</item>
<item name="android:textSize">16sp</item>
<item name="android:maxLines">1</item>
</style>
<style name="MyTextAppearance.TabPageIndicator" parent="Widget">
<item name="android:textStyle">bold</item>
<item name="android:textColor">@color/black</item>
</style>