【发布时间】:2015-09-22 14:50:59
【问题描述】:
我已尝试使用 ViewPager 和 sliptablayout 遵循指南,但它们似乎不起作用或已被弃用。现在在 android 模板上创建选项卡的最佳方式是什么?
或者谁能给我一个简单清晰的解释的指南/教程?
【问题讨论】:
标签: android templates layout tabs nav
我已尝试使用 ViewPager 和 sliptablayout 遵循指南,但它们似乎不起作用或已被弃用。现在在 android 模板上创建选项卡的最佳方式是什么?
或者谁能给我一个简单清晰的解释的指南/教程?
【问题讨论】:
标签: android templates layout tabs nav
使用专门为此而设计的库可以非常轻松地创建选项卡:
将依赖项添加到您的应用(不是项目)的 build.gradle:
dependencies {
compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
}
在您的布局 (XML) 中包含一个 PagerSlidingTabStrip 小部件,这通常放在它所代表的 ViewPager 上方:
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="48dip" />
创建一个 ViewPager 适配器:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
/**
* TabsPagerAdapter.
*
* @author Niels
* @version 1.0
* @since 11-9-2015
*/
public class TabsPagerAdapter extends FragmentPagerAdapter {
/**
* Contains all the fragments.
*/
private List<Fragment> fragments = new ArrayList<>();
/**
* Contains all the tab titles.
*/
private List<String> tabTitles = new ArrayList<>();
/**
* Creates a new PagerAdapter instance.
*
* @param fragmentManager The FragmentManager.
*/
public TabsPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitles.get(position);
}
/**
* Adds the fragment to the list, also adds the fragment's tab title.
*
* @param fragment New instance of the Fragment to be associated with this tab.
* @param tabTitle A String containing the tab title for this Fragment.
*/
public void addFragment(Fragment fragment, String tabTitle) {
fragments.add(fragment);
tabTitles.add(tabTitle);
}
}
最后,在您的活动的 onCreate 中:
//adapter = view.findViewById(...)
//viewpager = view.findViewById(...)
adapter = new TabsPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new FragmentTab1() "Tab 1");
adapter.addFragment(new FragmentTab2(), "Tab 2");
adapter.addFragment(new FragmentTab3(), "Tab 3");
adapter.addFragment(new FragmentTab4(), "Tab 4");
viewpager.setAdapter(adapter);
strip.setViewPager(viewpager);
【讨论】: