在Android 5.0工具栏中添加标签?

时间:2014-12-19 02:45:14

标签: android tabs toolbar

我正在创建我的第一个应用程序并且第一次学习java,并且我仍然坚持在工具栏上创建标签..

我看了this帖子。但是我仍然对如何正确实现它们感到困惑。我应该下载SlidingTabsColors文件,然后将其作为依赖项添加到gradle.build中吗?

在此部分中:fragment_sample.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <android.support.v7.widget.Toolbar
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/my_awesome_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:minHeight="?attr/actionBarSize"

            app:theme="@style/ThemeOverlay.AppCompat.ActionBar">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <com.example.android.common.view.SlidingTabLayout
                    android:id="@+id/sliding_tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
            </LinearLayout>
        </android.support.v7.widget.Toolbar>

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="0px"
            android:layout_weight="1"
            android:background="@android:color/white" />

    </LinearLayout>

我无法将com.example.android.common.view.SlidingTabLayout添加到布局中。

谢谢

1 个答案:

答案 0 :(得分:1)

试试这个

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <android.support.v7.widget.Toolbar
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/my_awesome_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:minHeight="?attr/actionBarSize"
            app:theme="@style/ThemeOverlay.AppCompat.ActionBar">
        </android.support.v7.widget.Toolbar>

        <com.example.android.common.view.SlidingTabLayout
                    android:id="@+id/sliding_tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="0px"
            android:layout_weight="1"
            android:background="@android:color/white" />

    </LinearLayout>

为了更好的实施,请尝试:

将此添加到您的gradle依赖

compile 'com.astuetz:pagerslidingtabstrip:1.0.1'

然后代替SlidingTabLayout使用

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip" />

在您要调用ViewPager的活动中,您必须

// Initialize the ViewPager and set an adapter
 ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
 pager.setAdapter(new YourCustomAdapter(getSupportFragmentManager()));

 // Bind the tabs to the ViewPager
 PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
 tabs.setViewPager(pager);

您可能希望像这样实现您的适配器:

public class YourCustomAdapter extends FragmentStatePagerAdapter {
    private String[] titles = { "Item 1", "Item 2", "Item 3" };
    public YourCustomAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch(position){
           case 0:{
              return new YourFragment();
           }
           case 1:{
              return new YourFragment();
           }
           case 2:{
              return new YourFragment();
           }
        }
        return null;
    }

    @Override
    public int getCount() {
        return titles.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}

希望它有所帮助!!!