android - ViewPager 问题

标签 android android-fragments android-viewpager

我正在尝试设置水平滚动选项卡,我看到有人说使用 ViewPager。

我已经部分工作了,我可以在我的 fragment 之间垂直滚动,但我没有在顶部看到任何选项卡来选择不同的选项卡。

这是我的代码

<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。

我是否没有正确包含库,这就是我看不到任何标签的原因吗?

最佳答案

您需要向您的 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

关于android - ViewPager 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18752833/

相关文章:

java - 如何在 Item Click Listener 上设置查看寻呼机?设置点击监听器不起作用

java - 为什么 HttpURLConnection API 中有流?

Android:需要手动更新注释处理器以添加对 androidx 错误的支持

android - MvvmCross Android fragment 添加到后台堆栈

Android SearchView 无法在 fragment 中工作

android - 如何在向上或向下拉动时关闭 fragment ?

java - 适配器类 : nested in activity?

android-viewpager - ViewPager2 迁移后出现无效 ID 0x00000001 错误

android - Nativescript 音频问题

android - 如何在 android 中以编程方式将音频 .mp3 转换为 .m4a