ViewPager通过自定义适配器MyPagerAdapter实现界面导航(上标题)
效果图:
一.这里是实现四个界面的左右拖动:
VIewPager资源的四个VIew.xmlwen文件,这里只是简易事件四个界面
演示其中一个代码:
view1.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#ff0" android:layout_height="match_parent"> <TextView android:text="界面1" android:layout_width="match_parent" android:layout_height="wrap_content" />
</LinearLayout>
(这里只是用一个TextView指示界面内容,实际应用可以对其进行扩张)
二. activity_main.xml文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="viewpager.lin.com.viewpager_daohang.MainActivity"> <!--PagerTabStrip给ViewPager设置标题--> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" > <!--PagerTabStrip标题标签--> <android.support.v4.view.PagerTabStrip android:id="@+id/tab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:foregroundGravity="top" >
</android.support.v4.view.PagerTabStrip>
(这里的PagerTabStrip和PagerTitleStrip都是界面标题的标签,效果图中的 空间、群聊、公众号等的显示,实际应用众二者选其一就行,两个都写是前面一个会被后面一个覆盖,这里我使是用PagerTabStrip)
<!--
<android.support.v4.view.PagerTitleStrip
android:id="@+id/tit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foregroundGravity="top"
>
</android.support.v4.view.PagerTitleStrip>
-->
</android.support.v4.view.ViewPager>
</LinearLayout>
三.自定义适配器 MyPagerAdapter.java
import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import java.util.List; public class MyPagerAdapter extends PagerAdapter{ //继承适配器 private List<View>viewList; private List<String> titleList; //实现构造方法 public MyPagerAdapter(List<View> viewList,List<String> titleList){this.viewList=viewList; this.titleList=titleList; } /*ViewPager正常一次加载三个多余的摧毁 */ @Override public int getCount() {return viewList.size(); //返回当前页卡数量 } @Override public boolean isViewFromObject(View view, Object object) { //View是否来自对象 return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { //实例化一个页卡 container.addView(viewList.get(position)); //position代表当前的位置(所定位的View) return viewList.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { //销毁页卡 container.removeView(viewList.get(position)); } /* 设置Viewpager页卡的标题 在main_activity.xml文件中的<ViewPager/>里添加<android.support.v4.view.PagerTabStrip/>子标签 才起作用 */ @Override public CharSequence getPageTitle(int position) { //返回当前view对应的标题 return titleList.get(position); } }
四.代码实现:MainActivity.java
import android.support.v4.view.PagerTabStrip;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.Window; import java.util.ArrayList;import java.util.List; public class MainActivity extends AppCompatActivity {/* 数据源是 List<View>时 适配器用:PagerAdapter 数据源是 List<Fragment> 适配器用 FragmentPagerAdapter 或 FragmentStatePagerAdapter */ private List<View>viewList; //用于装适配器的资源,即四个VIew.xml文件对应的IView对象 private List<String> titleList; //用于装标题文本 private ViewPager pager; //实例 private PagerTabStrip tab; //标题实例 @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); //requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无系统标题栏 setContentView(R.layout.activity_main); viewList=new ArrayList<View>(); //创建数据源 //将布局转化为View对象 (上下文,ID,父组件) View view1=View.inflate(MainActivity.this,R.layout.view1,null); View view2=View.inflate(MainActivity.this,R.layout.view2,null); View view3=View.inflate(MainActivity.this,R.layout.view3,null); View view4=View.inflate(MainActivity.this,R.layout.view4,null); viewList.add(view1);//加载资源 viewList.add(view2); viewList.add(view3); viewList.add(view4); //为每一个页面设置标题资源 titleList=new ArrayList<String>(); titleList.add("新朋友"); titleList.add("群聊"); titleList.add("公众号"); titleList.add("空间"); //为标题设置属性 tab= (PagerTabStrip) findViewById(R.id.tab); //标题对象 tab.setDrawFullUnderline(false); //标题底部无线条 tab.setBackgroundColor(4); //设置标题背景颜色 //tab.setTabIndicatorColor(color.GREEN); //设置菜单字样底部的线条颜色 //初始化ViewPager pager= (ViewPager) findViewById(R.id.pager); //创建pagerAdapter适配器 MyPagerAdapter myPagerAdapter=new MyPagerAdapter(viewList,titleList); pager.setAdapter(myPagerAdapter); } }
代码:
项目地址:https://github.com/linyuanbin/ViewPager
ViewPager通过自定义适配器MyPagerAdapter实现界面导航(上标题)相关推荐
- viewPager开启界面导航之旅
当下载一个app时,首次使用都会出现界面导航页面,今天就来写一个简单的页面导航,由于本人比较懒,随便找了一张图片,你可以按照你的想法换掉,废话少说,开始界面导航之旅 首先先写一个不到导航小圆点的界面导 ...
- android中界面滑动延伸,android中ViewPager详解--视图滑动、界面卡等效果 (三)
GuideActivity.java引导界面: import java.util.ArrayList; import java.util.List; import android.app.Activi ...
- android中ViewPager详解--视图滑动、界面卡等效果 (三)
2019独角兽企业重金招聘Python工程师标准>>> GuideActivity.java引导界面: import java.util.ArrayList; import java ...
- 结合Navigation组件实现JetPack Compose的界面导航
Android JetPack Compose可以利用Navigation组件来实现导航 一.Navigation组件的配置 新建项目,选择Empty Compose Activity. 然后,在项目 ...
- 自定义适配器(Adapter)的使用
在实际应用中常常需要用到自定义的适配器来显示视图比如qq好友列表等等, 对于这样的视图需求我们可以简单分析下所需要的内容.首先这个界面需要一个ListView.而每一个item需要有ImageView ...
- XamarinAndroid组件教程RecylerView自定义适配器动画
XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画.此时 ...
- java方便适配器,JAXB简单自定义适配器以及简单使用
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...
- 【RecyclerView】 一、RecyclerView 最基本用法 ( 添加支持库 | 设置布局文件 | 自定义适配器 )
文章目录 一.添加支持库 二.布局文件中使用 RecyclerView 三.自定义适配器 四.RecyclerView 设置流程 五.RecyclerView 完整 Java 代码示例 一.添加支持库 ...
- android 之自定义适配器(重写的getView()方法中convertView元素的妙用)一个实例
实现效果: 主要还是ListView的优化: 基本思路: <1>使用自定义适配器完成操作 <2>将listView进行优化处理 /* //ListView完成了重用条目的优化 ...
最新文章
- Qt Creator设置场景环境
- Hash Table Benchmarks
- MSF(五):客户端渗透
- html字段隐藏,如何刮取动态隐藏的HTML字段(UuViewState)值?
- win11 32位官方版原版镜像文件v2021.07
- 蓝桥杯 基础练习 特殊的数字
- 无代码来了,还要程序员吗?
- Electron开发桌面应用
- 星痕 轻松实现大屏数据可视化_数据可视化的一些思考丨如何做出令人满意的大屏可视化设计(一)...
- 我的世界怎么在服务器中显示键位,我的世界基础键位操作介绍 | 我的世界 | MC世界侠...
- 一文讲清微服务架构、分布式架构、微服务、SOA
- 如何用excel做正交分析_利用Excel进行正交设计及分析
- 舵机和舵机控制版、步进电机、伺服电机
- 《一树梨花》旋转特效
- excel表格如何转换成word表格_Word如何制作表格?Word制作表格超实用技巧
- 学习R语言这几本电子书就够了!
- 十分钟实现灭霸打响指灰飞烟灭的效果
- 生意一直不愠不火的火锅店,用一招“一元套餐”竟转亏为盈?
- UltimateDefrag磁盘碎片整理软件 v3.0.100.19汉化版
- json解析_json解析
热门文章
- 幸好权健AI还没落地!一个腕表顶中医,18个关键点就能刷脸
- Waymo无人驾驶出租车上线:科技感爆棚,还比Uber便宜
- 不戴眼镜听不清?Google用视觉信号分离语音 | 附论文
- 刚刚,英伟达发布最强无人车AI芯片,以及一系列自动驾驶新产品
- Excel中 ColorIndex 属性值和颜色对照表
- Apache RocketMQ 发布 v4.4.0,新添权限控制和消息轨迹特性
- lvs + keepalived + nginx 实现高可用
- 说说如何做oracle的SQL审核呢
- 成吉思汗:意志征服世界——读书笔记
- SQL Server中 缓冲和池的不同点