博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewPager通过自定义适配器MyPagerAdapter实现界面导航(上标题)
阅读量:7122 次
发布时间:2019-06-28

本文共 4046 字,大约阅读时间需要 13 分钟。

效果图:

0065b789d21c9b0d20eda5d4c8c650d25bafb525

一.这里是实现四个界面的左右拖动:

VIewPager资源的四个VIew.xmlwen文件,这里只是简易事件四个界面

演示其中一个代码:

view1.xml

</LinearLayout>

(这里只是用一个TextView指示界面内容,实际应用可以对其进行扩张)

二. activity_main.xml文件

</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
viewList; private List
titleList; //实现构造方法 public MyPagerAdapter(List
viewList,List
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文件中的
里添加
子标签 才起作用 */ @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
时 适配器用:PagerAdapter 数据源是 List
适配器用 FragmentPagerAdapter 或 FragmentStatePagerAdapter */ private List
viewList; //用于装适配器的资源,即四个VIew.xml文件对应的IView对象 private List
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对象 (上下文,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
(); 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

转载地址:http://ovoel.baihongyu.com/

你可能感兴趣的文章
[Android UI] ActionBar 自定义属性
查看>>
[web前端] 去哪儿网前端架构师司徒正美:如何挑选适合的前端框架?
查看>>
uva 11174 Stand in a Line (排列组合)
查看>>
java 类初始化和对象初始化
查看>>
实现字典序的递增
查看>>
INSTALL_FAILED_UPDATE_INCOMPATIBLE
查看>>
Java程序员常犯的10个错误
查看>>
安卓XML布局,线性布局常用属性总结~
查看>>
阿里巴巴中间件团队招人了!
查看>>
VC++的project文件
查看>>
乐观锁与悲观锁的应用场景
查看>>
zookeeper环境搭建(Linux)
查看>>
js实现trim() JS去掉首尾空格 JS去掉两头空格
查看>>
字符集工具类
查看>>
为何不精通C? 03 深入剖析声明
查看>>
Unity3D 按钮绑定点击事件
查看>>
MonolithFirst
查看>>
工作是容易的,赚钱是困难的(转)
查看>>
ssh无密码登陆(转)
查看>>
如何防止工具(八门神器)进行内存修改(转)
查看>>