Android-UI-viewpager--PagerTabStrip的使用---网易云探索(2)

前面探索的没有实现滑动切换fragment,后来经过探索。发现了Viewpager这个控件(容器)

viewpager

ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。分三个步骤来使用它:
但是我们重点使用的是:PagerTabStrip

PagerTabStrip

ViewPager用来管理layout并可以左右滑动显示各个页面数据,PagerTabStrip用来显示页面title,android:layout_gravity="top"表示title在顶部,可设置bottom等。

PagerTabStrip是v4支持包里面的类,是ViewPager专用的类,不能在其他地方使用。在使用的时候,我们只需要在ViewPager的布局里面声明即可。

第一步写好布局文件:
主布局文件,viewpager 里面加PagerTabStrip

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.administrator.viewpager.MainActivity">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <android.support.v4.view.PagerTabStrip
            android:id="@+id/tabstrip"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:gravity="center" />
    </android.support.v4.view.ViewPager>
</LinearLayout>

fragment布局文件

<?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">
<TextView
    android:id="@+id/text_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</LinearLayout>

第二步新建 MyFragment类,继承Fragment

public class MyFragment extends Fragment {

    String text;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment, container, false);
        TextView txt_content = (TextView) view.findViewById(R.id.text_content);
        Bundle args = getArguments();
        if (args != null) {
            text = args.getString("text");
        }
        txt_content.setText(text);
        return view;
    }
}

第三部 绑定Fragment,建立Fragment列表并设定viewpager的适配器。并重写里面的方法。由于加入了PagerTabStrip。

@Override
            public CharSequence getPageTitle(int position) {
                return titleList.get(position);

为tab添加列表。

MainActivity.class

public class MainActivity extends AppCompatActivity {
    private List<Fragment> fragments;
    private ViewPager viewPager;
    private List<String> titleList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        viewPager = (ViewPager) findViewById(R.id.viewpager);

        titleList = new ArrayList<String>();
        titleList.add("最新推荐");
        titleList.add("游戏娱乐");
        titleList.add("影音视频");

        fragments = new ArrayList<Fragment>();
        
        MyFragment fg1 = new MyFragment();
        Bundle args1 = new Bundle();
        args1.putString("text", "第1个Fragment");
        fg1.setArguments(args1);
        fragments.add(fg1);
        MyFragment fg2 = new MyFragment();
        Bundle args2 = new Bundle();
        args2.putString("text", "第2个Fragment");
        fg2.setArguments(args2);
        fragments.add(fg2);
        MyFragment fg3 = new MyFragment();
        Bundle args3 = new Bundle();
        args3.putString("text", "第3个Fragment");
        fg3.setArguments(args3);
        fragments.add(fg3);

        FragmentPagerAdapter adapter = new FragmentPagerAdapter(
                getSupportFragmentManager()) {

            @Override
            public int getCount() {
                return 3;
            }

            @Override
            public Fragment getItem(int position) {
                return fragments.get(position);
            }

            @Override
            public CharSequence getPageTitle(int position) {
                return titleList.get(position);
            }

        };
        viewPager.setAdapter(adapter);
    }
}

PS:如果定义的frament是v4下面的fragment 那么其他地方也要引用v4下的fragment。

这里写图片描述

PagerTitleStrip

两者相同的。只是PagerTabStrip是可交互的,而PagerTitleStrip是不可交互的区别。对于区别在哪些位置,即是上面的两点(是否可点击与下划线指示条)。
这样的话PagerTitleStrip只是标题不能点击,效果还不如前面的PagerTabStrip。
PagerTabStrip在效果上包含了PagerTitleStrip。

演示----略


文末标明参考资料:
使用PagerTabStrip实现绚丽的滑动标签
Android中ViewPager的PagerTabStrip与PagerTitleStrip用法实例

推荐参考博客详解viewpager

发布了85 篇原创文章 · 获赞 40 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/lw_zhaoritian/article/details/52431639
今日推荐