zoukankan      html  css  js  c++  java
  • 使用ViewPager和Fragment实现滑动导航

    ViewPage是android-support-v4.jar包提供的用于页面滑动的库,android-support-v4.jar是google推荐使用的一个类库,在项目中使用之前,你必须其添加到项目中(项目点右键Build path->configure build path,然后找到jar进行添加)

    1.在xml布局文件中添加android.support.v4.view.ViewPager容器及显示导航所用标签android.support.v4.view.PagerTitleStrip,如我添加的xml内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
     
        <!--
        This title strip will display the currently visible page title, as well as the page
        titles for adjacent pages.
        -->
     
        <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:paddingBottom="4dp"
            android:paddingTop="4dp"
            android:textColor="#fff" />
     
    </android.support.v4.view.ViewPager>

    2.在activity中导入以下包 

    1
    2
    3
    4
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;

    3.声明变量

    1
    2
    SectionsPagerAdapter mSectionsPagerAdapter;
    ViewPager mViewPager;

    4.在onCreate中对其进行初始化 

    1
    2
    3
    4
    5
    6
    mSectionsPagerAdapter = new SectionsPagerAdapter(
                    getSupportFragmentManager());
     
    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mSectionsPagerAdapter);

    5.添加类SectionsPagerAdapter,我这里使用了3个标签 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class SectionsPagerAdapter extends FragmentPagerAdapter {
     
            public SectionsPagerAdapter(FragmentManager fm) {
                super(fm);
            }
     
            @Override
            public Fragment getItem(int position) {
                // getItem is called to instantiate the fragment for the given page.
                // Return a DummySectionFragment (defined as a static inner class
                // below) with the page number as its lone argument.
                Fragment fragment = new HjFragment();
                Bundle args = new Bundle();
                args.putInt("no", position + 1);
                fragment.setArguments(args);
     
                return fragment;
            }
     
            @Override
            public int getCount() {
                // Show 3 total pages.
                return 3;
            }
     
            @Override
            public CharSequence getPageTitle(int position) {
                switch (position) {
                case 0:
                    return "标签1";
                case 1:
                    return "标签2";
                case 2:
                    return "标签3";
                }
                return null;
            }
        }

    可以看到在getItem中返回了一个Fragment,这个就是当滑动到不同标签时显示在ViewPager中的内容,Fragment相当于一个Activity,在可以其中的onCreateView函数中构造需要显示的内容并返回

    比如,以下代码将显示一个文本信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        TextView textView = new TextView(getActivity());
        textView.setGravity(Gravity.CENTER);
        textView.setText("你选择了标签:"+Integer.toString(getArguments().getInt(
                "no")));
        return textView;
     
    }
  • 相关阅读:
    Vue-router笔记
    webpack及其配置
    高阶函数+组件化开发
    Es6语法+v-on参数相关+vue虚拟dom
    英语资源及其APP推荐
    Qt获取ip地址
    QT创建和使用动态链接库
    error C2664: “strcmp”: 不能将参数 1 从“WCHAR [260]”转换为“const char *”
    Vue|VUE router 导航重复点击报错的问题解决方案
    Vue|触发路由跳转
  • 原文地址:https://www.cnblogs.com/Bonker/p/4595974.html
Copyright © 2011-2022 走看看