1

水平スクロール タブを設定しようとしていますが、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 はここでは許可されていないという警告が表示されます。

ライブラリを正しく含めていないので、タブが表示されませんか?

4

2 に答える 2

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);

また、タブが押されたときに ViewPager を選択したページに変更するには、 aActionBar.TabListenerと aが必要です。ViewPager.OnPageChangeListener

完全な例については、http: //developer.android.com/reference/android/support/v4/view/ViewPager.htmlを参照してください。

于 2013-09-11T23:17:13.347 に答える
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>

ここの例と同様ですが、カスタムFragmentStatePagerAdapterを作成する必要があります。

これは、Android 2.3.5 アプリケーションで行った方法です。

于 2013-09-11T23:55:13.780 に答える