安卓界面之Viewpager和Tablayout实现滑动界面
摘要:六部实现选项卡界面
一.
在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实现滑动界面的更多相关文章
- 安卓界面之Toolbar+tablayout+viewpager仿WhatsApp界面样式
实现界面: 布局代码: <?xml version="1.0" encoding="utf-8"?> <android.support.con ...
- 安卓界面之Toolbar上手
一.在配置文件采用自定义Style方法去除Actionbar <resources> <style name="MyTheme" parent="The ...
- ViewPager+GridView实现横向滑动 仿大众点评
先看演示效果: 1 ViewPager类提供了多界面切换的新效果. 新效果有如下特征: [1] 当前显示一组界面中的其中一个界面. [2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界 ...
- 安卓开发笔记——Fragment+ViewPager组件(高仿微信界面)
什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再 ...
- 基于ViewPager与TabLayout建立三类图表
延续昨天,今天使用ViewPager和TabLayout来实战一下,顺便补充一下新知识: 1.线形图,显示一周的温度情况. 2.饼状图,2017年互联网教育细分领域投资情况. 3.柱状 ...
- Android使用ViewPager实现左右循环滑动及轮播效果
边界的时候会看到一个不能翻页的动画,可能影响用户体验.此外,某些区域性的ViewPager(例如展示广告或者公告之类的ViewPager),可能需要自动轮播的效果,即用户在不用滑动的情况下就能够看到其 ...
- Android 使用ViewPager实现左右循环滑动图片
ViewPager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图,用美女图片是我一贯的作风,呵呵 1. 首先看一 ...
- android 解决ViewPager双层嵌套的滑动问题
解决ViewPager双层嵌套的滑动问题 今天我分享一下ViewPager的双层嵌套时影响内部ViewPager的触摸滑动问题 之前在做自己的一个项目的时候,遇到广告栏图片动态切换,我第一时间想到的就 ...
- Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)
上一段时间写过一篇文章<基于ViewPager实现微信页面切换效果> 里面实现了相似微信Tab的页面.可是这样的实现方法有个问题.就是以后全部的代码逻辑都必须在MainActivity中实 ...
随机推荐
- Kubernetes-1
master 节点负责管理整个集群,管理的控制面板,全局的角色和调度 3个组件 API Server : 统一入口 kubectl 客户端管理工具 Etcd 数据库 Scheduler 集群的调度 C ...
- Tools - Vim
Vim 简明 Vim 练级攻略 基础设置 在vim界面点击":"然后进行设置,但只会在当前vim界面生效: 添加相关设置在vim配置文件(例如"/etc/vimrc&qu ...
- Spring Boot - Profile配置
Profile是什么 Profile我也找不出合适的中文来定义,简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件. Profile使用 假如有开发.测试.生 ...
- javascript 最全面的数组操作合集
一.数组添加.删除.替换.截取操作 1.arr.unshift(1) 在数组头部添加一个元素 1 (直接改变原数组,返回值为添加元素后数组的length) 2.arr.shift() 在数组的头部删除 ...
- Python函数学习——作用域与嵌套函数
全局与局部变量 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数. 当全局变量与局部变量同名时,在定义局部变量的函数内 ...
- web自动化测试---selenium分布式测试
使用selenium框架还可以进行分布式测试,操作如下: 准备俩台PC:A和B,ip分别为IP_A和IP_B 下载最新的selenium-standalone的jar包,可以到下面地址下载各版本的包: ...
- spring cloud+.net core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
- Ajax经典交互讲解
资料: XMLHttpRequest 对象 XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力.XMLHttp ...
- 从零开始学 Web 之 CSS3(八)CSS3三个案例
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Java并发编程笔记之Semaphore信号量源码分析
JUC 中 Semaphore 的使用与原理分析,Semaphore 也是 Java 中的一个同步器,与 CountDownLatch 和 CycleBarrier 不同在于它内部的计数器是递增的,那 ...