android_使用ViewPager和Fragment实现滑动导航

ViewPage是android-support-v4.jar包提供的用于页面滑动的库.这里没有将整个实现过程记录,只是把知识点摘出来单独解释.可参照代码自己实现.1.在xml布局文件中添加android.support.v4.view.ViewPager容器及显示导航所用标签android.support.v4.view.PagerTitleStrip,如我添加的xml内容如下

大家好,又见面了,我是全栈君。

ViewPage是android-support-v4.jar包提供的用于页面滑动的库.这里没有将整个实现过程记录,只是把知识点摘出来单独解释.可参照代码自己实现.

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

如我添加的xml内容如下

<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 pagetitles 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中导入以下包 

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.声明变量

SectionsPagerAdapter mSectionsPagerAdapter;//此处的SectionsPagerAdapter是继承了FragmentPagerAdapter的类
ViewPager mViewPager;

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

 

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
 // Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);

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

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 Fragment();
      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函数中构造需要显示的内容并返回
比如,以下代码将显示一个文本信息

@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;
 
}

 

关于fragment的具体内容,在另一篇转载的文章里更加具体点击打开链接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121456.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何在mac上录屏(并且录制到屏幕内部声音)完美解决方案

    如何在mac上录屏(并且录制到屏幕内部声音)完美解决方案文章目录前言一、quicktimeplayer+Soundflower方案解决quicktimeplayer不能录制系统声音的缺陷在quicktimeplayer选择刚配置的音频二、iShot+Soundflower方案总结前言一直想找一款在mac录屏的软件,直到今天才有了完美的解决方案,总所周知,mac上有自带的录屏软件(quicktimeplayer),这款软件简单,但是因为其不能录制屏幕内部的声音而不被新手使用。而其他录屏软件大部分需要付款,大部分开源的也不能录制屏幕内部的声音。接下来

  • LMDB使用说明_ldd教程

    LMDB使用说明_ldd教程http://rayz0620.github.io/2015/05/25/lmdb_in_caffe/官方的extract_feature.bin很好用,但是输出的特征是放在LMDB里的。以前嫌LMDB麻烦,一直都图方便直接用ImageDataLayer来读原始图像。这次绕不过去了,就顺便研究了一下Caffe对LMDB的使用,一些心得写下来和大家分享一下。提取特征的内容下一篇再写。

  • 基于android 社会的app短信分享 发送回调事件的实现

    基于android 社会的app短信分享 发送回调事件的实现

  • 在IDEA中实战Git「建议收藏」

    在IDEA中实战Git「建议收藏」工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:假设小组中有两个人,组长小张,组员小袁场景一:小张创建项目并提交到远程Git仓库场景二:小袁从远程Git仓库上获取项目源码场景三:小袁修改了部分源码,提交到远程仓库场景四:小张从远程仓库获取小袁的提交场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发场景六:小袁把分支提交到远程Git仓库场景七…

  • MybatisPlus逻辑删除

    MybatisPlus逻辑删除**MybatisPlus逻辑删除的使用**首先我们要知道为什么要进行逻辑删除:逻辑删除可以理解为假删除,并不是真的将数据进行删除。假删除只是为了数据安全起见,在数据库中增添一个字段,我们可以默认这个字段为1时数据被删除,而字段值为0时数据被删除想象一下这样的业务场景,当一位公司职员离职,但是手续还没有办理,这时我们便可以设置逻辑删除,以保证其信息不会被立刻删除。我们电脑里的回收站正是利用了逻辑删除,我们点击删除的文件不会被立刻删除,而是放入回收站,等我们反悔时可以将其进行还原。在Mybat

  • 手把手教你利用爬虫爬网页(Python代码)[通俗易懂]

    手把手教你利用爬虫爬网页(Python代码)[通俗易懂]本文主要分为两个部分:一部分是网络爬虫的概述,帮助大家详细了解网络爬虫;另一部分是HTTP请求的Python实现,帮助大家了解Python中实现HTTP请求的各种方式,以…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号