ViewPagerIndication指针的使用

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>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值