我正在尝试设置水平滚动标签,我看到有人说使用ViewPager。
我已经部分工作了,我可以在我的片段之间垂直滚动,但是我没有在顶部选中任何标签来选择不同的标签。
这是我的代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
MyPageAdapter pageAdapter;
Context ctx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
ctx = this;
ActionBar actionBar = getActionBar();
assert actionBar != null;
if (savedInstanceState != null) {
actionBar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
}
List<Fragment> fragments = getFragments();
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);
}
private List<Fragment> getFragments(){
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(MyFragment.newInstance("MyFragment 1"));
fList.add(MyFragment.newInstance("MyFragment 2"));
fList.add(MyFragment.newInstance("MyFragment 3"));
return fList;
}
class MyPageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
我还包括v4支持库
dependencies {
compile ('com.android.support:support-v4:13.0.0', 'com.google.android.gms:play-services:3.1.36')
compile files('/libs/android-async-http-1.4.3.jar')
}
但是,在我的XML布局中,我收到一条警告,说这里不允许使用Element android.support.v4.view.ViewPager。
我没有正确地包含库,这就是为什么我看不到任何标签?
答案 0 :(得分:1)
您需要向ActionBar添加标签。
这样做:
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
mTabsAdapter = new TabsAdapter(this, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText("Tab 1"),
YourFragment.class, null);
mTabsAdapter.addTab(bar.newTab().setText("Tab 2"),
YourFragment.class, null);
mTabsAdapter.addTab(bar.newTab().setText("Tab 3"),
YourFragment.class, null);
此外,您需要ActionBar.TabListener
和ViewPager.OnPageChangeListener
,以便在按下标签时让ViewPager更改为所选页面。
请点击此处查看完整示例: http://developer.android.com/reference/android/support/v4/view/ViewPager.html
答案 1 :(得分:0)
如果您只想显示可以通过更改布局来实现的页面标题,则无需操作栏
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#33b5e5"
android:textColor="#fff"
android:paddingTop="4dp"
android:paddingBottom="4dp" />
</android.support.v4.view.ViewPager>
与示例here一样,但您仍需要创建自定义FragmentStatePagerAdapter。
这就是我在android 2.3.5应用程序中完成的方法。