我将向您展示如何在您的活动中实现 viewpager,以及如何将适配器设置为 viewpager 并在 viewpager 中显示片段。
首先,您应该将 viewpager 添加到您的活动布局中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="42dp"
android:background="?attr/colorPrimary"
android:elevation="4dp"
app:tabIndicatorColor="@color/colorAccent"
app:tabMode="fixed"
app:tabTextColor="@color/white"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tabLayout"/>
</RelativeLayout>
那么你应该为你的viewpager设置adapter和tablayout:
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
TrialAdapter adapter = new TrialAdapter(this, getFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
您需要实现 TrialAdapter,例如:
public class TrialAdapter extends FragmentStatePagerAdapter {
private Context context;
public TrialAdapter(Context context,FragmentManager fragmentManager) {
super(fragmentManager);
this.context = context;
}
@Override
public Fragment getItem(int position) {
if(position == 0){
return new TrialFragment();
} else{
return new TrialFragment();
}
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
@Override
public int getCount() {
return 2;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
if(position == 0){
return "Tab-1";
} else{
return "Tab-2";
}
}
}
你应该像这样写你的片段:
public class TrialFragment extends Fragment {
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_trial, container, false);
return view;
}
}
最后,您应该在布局资源中创建 fragment_trial.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Trial Fragment"/>
</RelativeLayout>
我建议你使用android.app.Fragment 和android.support.v13.app.FragmentStatePagerAdapter,所以你需要在你的gradle 文件(app 模块)中添加下面几行:
compile 'com.android.support:support-v13:+' // for FragmentStatePager
compile 'com.android.support:design:23.3.0' // for TabLayout
祝你好运。