摘要:六部实现选项卡界面

一.

在gradle文件添加以下代码:

implementation 'com.android.support:design:28.0.0'

在gradle文件添加以上代码后,才能使用Tablayout(版本号28.0.0是我做实验时最新的版本)

二.布局代码

<android.support.design.widget.TabLayout

            android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMaxWidth="0dp"
app:tabGravity="fill"
app:tabMode="fixed"
android:id="@+id/tablayout_id"
android:textAlignment="center"
app:tabSelectedTextColor="@color/tabindicatorcolor"
app:tabTextColor="@color/tabtextcolor"
app:tabIndicatorColor="@color/tabindicatorcolor"
android:background="@color/colorPrimary"/>
<!--app:tabIndicatorColor :指示条的颜色-->
<!--app:tabIndicatorHeight :指示条的高度-->
<!--app:tabSelectedTextColor : tab被选中时的字体颜色-->
<!--app:tabTextColor : tab未被选中时的字体颜色-->
 <android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewpager_id">
</android.support.v4.view.ViewPager>

三.在res/layout目录下自定义xml文件作为fragment中的选项界面

  action_fragment.xml和mark_fragment.xml分别为"行动","统计"选项卡界面

四.新建多个继承Fragment的子类返回选项界面

FragmentAction.java
public class FramentAction extends Fragment {

    public FramentAction() {
} @Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.action_fragment,container,false);
return view;
}
}

FragmentMark.java

public class FragmentMark extends Fragment {
public FragmentMark() {
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.mark_fragment,container,false);
return view;
} }

五.自定义继承FragmentPagerAdapter的子类ViewPagerAdater,重写getItem(),getCount(),getPageTitle()方法,添加AddFragment()方法

public class ViewPagerAdaper extends FragmentPagerAdapter {

    private final List<Fragment> fragmentList=new ArrayList<>();
private final List<String> fragementListTitle=new ArrayList<>(); public ViewPagerAdaper(FragmentManager fm) {
super(fm);
} @Override
public Fragment getItem(int i) {
return fragmentList.get(i);
} @Override
public int getCount() {
return fragementListTitle.size();
} @Nullable
@Override
public CharSequence getPageTitle(int position) {
return fragementListTitle.get(position);
} public void AddFragemnt(Fragment fragment,String title){
fragmentList.add(fragment);
fragementListTitle.add(title);
}
}

六.在MainActivity.java中实现以下代码:

     tabLayout=findViewById(R.id.tablayout_id);
viewPager=findViewById(R.id.viewpager_id);
ViewPagerAdaper mAdaper=new ViewPagerAdaper(getSupportFragmentManager());
mAdaper.AddFragemnt(new FramentAction(),"行动");
mAdaper.AddFragemnt(new FragmentMark(),"统计");
viewPager.setAdapter(mAdaper);
tabLayout.setupWithViewPager(viewPager);

安卓界面之Viewpager和Tablayout实现滑动界面的更多相关文章

  1. 安卓界面之Toolbar+tablayout+viewpager仿WhatsApp界面样式

    实现界面: 布局代码: <?xml version="1.0" encoding="utf-8"?> <android.support.con ...

  2. 安卓界面之Toolbar上手

    一.在配置文件采用自定义Style方法去除Actionbar <resources> <style name="MyTheme" parent="The ...

  3. ViewPager+GridView实现横向滑动 仿大众点评

    先看演示效果: 1  ViewPager类提供了多界面切换的新效果. 新效果有如下特征: [1] 当前显示一组界面中的其中一个界面. [2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界 ...

  4. 安卓开发笔记——Fragment+ViewPager组件(高仿微信界面)

    什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再 ...

  5. 基于ViewPager与TabLayout建立三类图表

      延续昨天,今天使用ViewPager和TabLayout来实战一下,顺便补充一下新知识:   1.线形图,显示一周的温度情况.   2.饼状图,2017年互联网教育细分领域投资情况.   3.柱状 ...

  6. Android使用ViewPager实现左右循环滑动及轮播效果

    边界的时候会看到一个不能翻页的动画,可能影响用户体验.此外,某些区域性的ViewPager(例如展示广告或者公告之类的ViewPager),可能需要自动轮播的效果,即用户在不用滑动的情况下就能够看到其 ...

  7. Android 使用ViewPager实现左右循环滑动图片

    ViewPager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图,用美女图片是我一贯的作风,呵呵 1.    首先看一 ...

  8. android 解决ViewPager双层嵌套的滑动问题

    解决ViewPager双层嵌套的滑动问题 今天我分享一下ViewPager的双层嵌套时影响内部ViewPager的触摸滑动问题 之前在做自己的一个项目的时候,遇到广告栏图片动态切换,我第一时间想到的就 ...

  9. Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)

    上一段时间写过一篇文章<基于ViewPager实现微信页面切换效果> 里面实现了相似微信Tab的页面.可是这样的实现方法有个问题.就是以后全部的代码逻辑都必须在MainActivity中实 ...

随机推荐

  1. 软件测试人员需要掌握的linux命令(一)

    有些技能可以事半功倍,熟练的使用这些命令可以提高工作效率,并且结合这些命令对测试过程中遇到的问题进行一些初步的定位. 一:目录与文件操作: ls 使用权限:所有人功能 : 显示指定工作目录下之内容(列 ...

  2. 影响 POST 请求文件上传失败的几个环节的配置(php + nginx)

    写在前面 最近写一个 php 接口,接受上传的文件,发现文件只要超过 5m 以上就会无响应失败,最后发现是 shadowsocks 的 timeout 设置问题(我全程开了全局的 VPN),但一开始并 ...

  3. google的android工具常用下载路径

    android的bug工具在网上搜的时候,经常被索引到垃圾网站,今天找到了一个网站下载android工具 都是最新的,十分不错,就做个分享吧. Google 提供了 Windows.macOS 以及 ...

  4. 树莓派安装vnc server并设置自启动

    在SSH终端输入sudo raspi-config, 这里需要打开几个选项: expand_rootfs – 将根分区扩展到整张SD卡; change_pass – 默认的用户名是pi,密码是rasp ...

  5. idea 中解决maven 包冲突的问题(maven helper)

    转:链接 一.冲突问题 比如项目中引用了两个 fastjson.jar的版本,分别为 fastjson:1.2.28fastjson:1.2.3 我们用到了1.2.28中的某个类, 比如 A类,在版本 ...

  6. Python pandas学习总结

    本来打算学习pandas模块,并写一个博客记录一下自己的学习,但是不知道怎么了,最近好像有点急功近利,就想把别人的东西复制过来,当心沉下来,自己自觉地将原本写满的pandas学习笔记删除了,这次打算写 ...

  7. 在Android项目中使用AspectJ

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/8888459.html 什么是AOP AOP是 Aspec ...

  8. jobss目录结构

    一. JBoss的目录结构       bin:包含各种脚本文件以及相关文件,比如run.bat和shutdown.bat批处理文件.        client:存储配置信息和可能被Java客户端应 ...

  9. Jmeter配置通过SSH连接的mysql数据库

    jmeter连接配置mysql数据库时,如果数据库服务器没有通过ssh连接,则只需要添加配置相应的jdbc参数就可以了.如果数据库服务器是通过SSH连接的,则需要通过中间远程连接工具来登录,此处使用的 ...

  10. 鸟哥的Linux私房菜:基础学习篇 —— 第六章笔记

    1.下面这些就是比较特殊的目录,得要用力的记下来才行: . 代表此层目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表“目前使用者身份”所在的主文件夹 ~account 代表 account ...