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的具体内容,在另一篇转载的文章里更加具体点击打开链接

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • elk的搭建和使用_搭建云服务器教程

    elk的搭建和使用_搭建云服务器教程首先准备安装包传输到linux下找个目录存放安装elasticsearch-head作为web展示所以首先安装nodejs主要是利用npm1安装wgetyuminstall-ywget2.镜像淘宝下载node-v11wgethttps://npm.taobao.org/mirrors/node/v11.0.0/node-v11.0.0.tar.gz3.解压tar-…

    2022年10月21日
    2
  • 通信原理一个月能学会吗_通信原理第六版

    通信原理一个月能学会吗_通信原理第六版Socket通信原理对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:什么是TCP/IP、UDP?Socket在哪里呢?Socket是什么呢?你会使用它们吗?什么是TCP/IP、UDP?TCP/IP(TransmissionControlPro…

    2022年10月17日
    4
  • PD快速充电协议(转)[通俗易懂]

    PD快速充电协议(转)[通俗易懂]来源-作者@:http://www.elecfans.com/d/647097.html建议读者阅读原文,确保获得完整的信息1.PD充电协议是什么意思    PD充电协议是USB-IF组织公布的功率传输协议,它可以使目前默认最大功率5V/2A的type-c接口提高到100W,同时谷歌宣布Android7.0以上的手机搭载的快充协议必须支持PD协议,意在统一快充市场。2.PD协议快充是什么意思   …

    2025年8月8日
    4
  • 2020最新版MySQL数据库面试题(一)

    2020最新版MySQL数据库面试题(一)

    2022年2月14日
    40
  • Java除法运算(保留小数)

    Java除法运算(保留小数)编程的人都知道,java中的“/”、“%”运算,其中前者为取整,后者取余数。那么有没有快捷的运算方法取正常的运算结果呢?查了资料,发现很简单。代码如下: /** *TODO除法运算,保留小数 *@author袁忠明 *@date2018-4-17下午2:24:48 *@parama被除数 *@paramb除数 *@return商 */ pu…

    2022年5月3日
    49
  • 【开发工具】【smartctl】硬盘检测工具(smartctl)的使用

    【开发工具】【smartctl】硬盘检测工具(smartctl)的使用概述随着硬盘容量、速度的快速发展,硬盘的可靠性问题越来越重要,今天的单块硬盘存储容量可轻松达到1TB,硬盘损坏带来的影响非常巨大。不同的文件系统(xfs,reiserfs,ext3)都有自己的检测和修复工具。检测之前可以先使用dmesg命令查看有没有硬件I/O故障的日志,如果有,先用fsck看看是不是文件系统有问题,如果不是则可以使用下面介绍硬盘检测和优化方法来修复它。grep“error”/va/log/messages*;SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了

    2022年10月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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