前几天学习了ViewPager作为引导页和Tab的使用方法。后来也有根据不同的使用情况改用Fragment作为Tab的情况,以及ViewPager结合FragmentPagerAdapter的使用。...> 3.MainActivity代码 第1步:实例化ViewPager,给ViewPager设置Adapter 第2步:实例化TabPageIndicator,TabPageIndicator...ViewPager,然后实例化TabPageIndicator,然后设置TabPageIndicator和ViewPager关联,就是调用TabPageIndicator的setViewPager(ViewPager...view)方法,这样子就实现了点击上面的Tab,下面的ViewPager切换;滑动ViewPager,上面的Tab跟着切换。..., 然后给ViewPager设置Adapter ViewPager pager = (ViewPager)findViewById(R.id.pager); FragmentPagerAdapter
在TabLayout出现之前,基本都是通过 ViewPager+FragmentPagerAdapter+第三方开源tab指示器(TabPageIndicator)来实现的。...现在Android内部提供了现成的TabLayout控件来实现ViewPager指示器的效果。 先看效果图: ?...第57行,将TabLayout和ViewPager进行关联。...这里我们使用一些属性,比如:tabTextColor用来设置Tab中文字颜色; tabSelectedTextColor用来设置Tab被选中时文字颜色;tabIndicatorColor用来设置指示器颜色...;tabIndicatorHeight用来设置指示器的高度。
作者博客 https://keep2iron.github.io/ 目录 前言 准备 效果展示 布局分析 ViewPager的效果实现 ViewPager布局设置 ViewPager代码设置 BeizerIndicator...布局分析 界面由 ViewPager + 自定义指示器 ViewPager的间隔效果....小球能够和ViewPager联动不断变化 ViewPager效果实现 我们看到上面的是一个可以滑动的ViewPager,但是默认的ViewPager是一页只能显示一个Item的,因此经过多方查找,我找到了以下方法可以实现这个效果...: ViewPager的布局 ?...ViewPager的代码设置 ? 设置viewpager缓存页数,因为默认ViewPager只加载一页,因此这里设置成三个,让其全部加载。
ViewPagerFrameAdapter(getSupportFragmentManager(),titles); mPager.setAdapter(adapter); //得到指示器...underlinePageIndicator.setViewPager(mPager); underlinePageIndicator.setFades(false); //设置指示器...viewPager) { if (mViewPager == viewPager){ return; } // if (mViewPager !...-- 标题 和 标题下面的 指示器 -- <LinearLayout android:layout_width="fill_parent" android:layout_height...-- 下标的指示器的颜色 -- <style name="CustomUnderlinePageIndicator" <item name="selectedColor" #EB5548<
作者原文章链接 MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器 MagicIndicator系列之二 —— MagicIndicator...com.jky.mobilebzt.util; import android.content.Context; import android.graphics.Color; import android.support.v4.view.ViewPager...MagicIndicatorUtil { public static void initMagicIndicator(View view, Context context, String[] titleArray, ViewPager
本文实例讲述了Android开发实现的ViewPager引导页功能(动态加载指示器)。分享给大家供大家参考,具体如下: 先看效果图咯~ ?...android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent...viewPager; private int[]images={R.drawable.guide_1,R.drawable.guide_2,R.drawable.guide_3}; private List...<ImageView imageViews;//用来存放几个imageview的实例 实例化并且加载适配器: viewPager.setAdapter(new MyAdapter()); imageViews...=(ViewPager) findViewById(R.id.viewPager); li=(LinearLayout) findViewById(R.id.linear); rl=(RelativeLayout
viewpager嵌套viewpager 要求:外层不可以滑动,内层可以滑动 实现:重写外层的viewpager的2个方法即可 public class NoScrollViewPager extends...ViewPager { public NoScrollViewPager(Context context) { super(context); }...时什么都不做,让其不能滑动,实现viewpager不能滑动 @Override public boolean onTouchEvent(MotionEvent ev) {...return true; } //事件拦截,false不拦截子控件的事件,让内层的viewpager可以滑动,切不带动外层的viewpager @Override public...目录 用 [TOC]来生成目录: viewpager嵌套viewpager 脚注 目录 数学公式 UML 图 离线写博客 浏览器兼容 数学公式 使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com
它可以用来动态的展示多个图片,之前写过两篇博客:实现ViewPager无限循环的方式一和实现ViewPager无限循环的方式二,在这两篇博客中,分析了两种实现ViewPager无限循环的原理,但是在使用的过程中...-- 是否显示指示器 -- <attr name="indicatorHeight" format="dimension" / <!...viewPager; private LinearLayout indicator;// 指示器 private onItemClickListener listener; // 控件End...,默认显示 private int indicatorHeight;// 指示器的高度,默认35dp private int indicatorPositionSize; // 指示器的大小...= new ViewPager(context); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @
将layout的布局add进去list中,然后调用setView方法把list传过去, 还提供了设置指示器图标的方法,以及指示器间距的方法,最后必须调用初始化方法init进行初始化 这是其中的一个layout...上面使用ViewPager作为View的容器,下面的指示器用LinearLayout将动态创建的ImageView添加进去。...和普通的布局没啥区别,外层LinearLayout垂直布局,其中有ViewPager作为滑动切换的容器,内部的LinearLayout作为指示器容器。 2....因为之前调用了setView方法,传入了一组布局,我们通过循环来拿到这组View并添加到list中,然后设置到viewPager的Adapter,然后调用initLinearLayout方法初始化指示器...当然这样还不行,在viewPager滑动的时候我们得更新指示器上的点 我们对ViewPager设置了监听事件setOnPageChangeListener,在滑动的时候会调用onPageSelected
一、概述、 水平滚动条 可以左右滑动 可与ViewPager协同使用 二、HorizontalScrollView里边只能放一个子元素 可以放一个Layout布局对象来盛放多个元素 里边可以设置指示器...和一条基准线 可以用来做导航栏类似于ActionBar的Tab导航栏,HorizontalScrollView做导航栏可以设置指示器跟随ViewPager页面移动实现动态效果 一般点击导航栏的某一项...ViewPager相应跳到对应的页面,ViewPager跳到指定页面时导航栏也应该切换到对应的导航分类处 三、下面是实现的代码 1 package com.qf.viewpager02_horizontalscrollview...; //水平滚动控件 22 private LinearLayout navLayout; //标题模块所在的布局控件 23 private View navIdicate; //指示器控件...24 private LinearLayout.LayoutParams indicateParams; //指示器控件在线性布局中的参数对象 25 26 @Override
本以为单纯的ViewPager就可以实现这些功能。但是蛋疼的事情来了,ViewPager并不支持循环翻页。所以要实现循环还得需要自己去动手。...将触发重新计算指示器指向 setIndicator(0); viewPager.setOffscreenPageLimit(3); viewPager.setOnPageChangeListener...(showPosition); } /** * 设置指示器居中,默认指示器在右方 */ public void setIndicatorCenter...,可能由于之前指示器被限制了高度,此处释放 */ public void releaseHeight() { getView().getLayoutParams()....中,为了在进行滚动时阻断父ViewPager滚动,可以 阻止父ViewPager滑动事件 * 父ViewPager需要实现ParentViewPager中的setScrollable方法
简介 一般我们的app主界面都是界面下方或者上方有指示器,结合ViewPager或者Fragment来实现。...而指示器可以是RadioGroup或者是其他简单的View(如TextView),但复杂的业务逻辑需要我们自己控制,还有过度动画也需要自己实现。...如今,Android中也有自带这种指示器的控件TabLayout。TabLayout存在于android design库中,它提供了一个水平的布局来展示Tabs。...因为TabLayout一般会结合ViewPager使用,而标签内容,标签数量也可以随着ViewPager来改变。 下文会提到TabItem结合ViewPager动态添加。...有以下属性支持修改: tabIndicatorColor:指示器颜色 tabBackground:tablayout的背景颜色 tabIndicatorHeight:指示器高度 tabGravity:指示器位置
RollViewPager是一个自动轮播的Viewpager,支持无限循环。 触摸时会暂停播放,直到结束触摸一个延迟周期以后继续播放。 看起来就像这样。...RollViewPager提供了自定义指示器的类:HintView 用法: 参数说明:上下文,当前轮播图指示器图片 默认指示器图片 mRollViewPager.setHintView(new IconHintView...本ViewPager也可以使用其他任意PagerAdapter。 StaticPagerAdapter: 存储页面的Adapter。...可以用于其他ViewPager。...可以用于其他ViewPager。 LoopPagerAdapter 无限循环的Adapter。
这篇博客主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌套ViewPager导致的滑动冲突 ViewPager里面嵌套ViewPager...轮播图的几种实现方式 文章首发地址CSDN:http://blog.csdn.net/gdutxiaoxu/article/details/52939127 先看一下效果图 ScrollView里面嵌套ViewPager...ViewPager里面嵌套ViewPager ---- View的 事件分发机制 这篇博客不打算详细讲解View的事件分发机制,因为网上已经出现了一系列的好 文章,我自己的水平也有限,目前肯定写得不咋的...*/ public class MyViewPager extends ViewPager { private static final String TAG = "xujun";...里面嵌套ViewPager导致的滑动冲突 内部解决法 从子View ViewPager着手,重写 子View的 dispatchTouchEvent方法,在子 View需要拦截的时候进行拦截,否则交给父
首先我们引入compile 'com.android.support:design:23.1.1' 它的用法是: 第一种比较简单,就是文本和一个指示器。...app:tabIndicatorColor是设置指示器的背景颜色,app:tabIndicatorHeight设置指示器的高度,app:tabSelectedTextColor是选中时文本的颜色,app...Color.GRAY);//设置文本在选中和为选中时候的颜色 // tabLayout.setSelectedTabIndicatorColor(Color.WHITE);//设置选中时的指示器的颜色.../item> #f00 tabIndicatorHeight是设置导航那个指示器高度为...0,因为不需要那个指示器了。
Context context){ mHandler=new Handler(); this.viewPager=new ViewPager(context); this.viewPager.setOffscreenPageLimit...); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) { viewPager.setId(viewPager.hashCode...); } 在这里我们知道,LoopViewPager里面其实最主要就是包裹着ViewPage而已,至于指示器后面在讲。...讲完轮播,接着就是指示器,指示器我也写了两个,一种是简单的IndicatorView,没什么动画,直接图片切换,一种是实现指示器滑动动画的IndicatiorCanvasView。...,在通过initView()遍历ImageView,再通过addView添加,这就完成了指示器界面初始化。
效果 思路 这里使用ViewPager来实现轮播的效果,但是ViewPager是滑动到最后一张时,是不能跳转到第一张的。...于是,我们可以这样: 需要显示的轮播图有N张 往ViewPager中添加N个View,这时ViewPager中有: View(1)、View(2)、View(3) ......View(N) 再往ViewPager中添加View(1),这时ViewPager中有: View(1)、View(2)、View(3) ......;//实现轮播图的ViewPager private TextView mTitle;//标题 private LinearLayout mIndicatorLayout; // 指示器...():利用ViewPager的滚动监听,实现了上面的思路。
context) { //关闭view的OverScroll setOverScrollMode(OVER_SCROLL_NEVER); //设置指示器背景...; //设置指示器背景容器 RelativeLayout pointContainerRl = new RelativeLayout(context);...RelativeLayout.ALIGN_PARENT_BOTTOM); addView(pointContainerRl, pointContainerLp); //设置指示器容器...mPointRealContainerLl.setVisibility(View.GONE); } } //设置指示器布局位置...RIGHT,LEFT * * @param position */ public void setPoinstPosition(int position) { //设置指示器布局位置
目录 效果: 依赖: 代码方式: XML方式: 关联ViewPager: 常用属性: 所有属性: 高级用法: 设置图标 添加监听 默认选中或指定选中 文字样式 下划线宽度等同文字 下划线样式 Github...android:icon="@drawable/ic_android"/> 关联ViewPager...return tabTitles[position]; } } 这样基本能实现大部分需求了 常用属性: app:tabIndicatorColor="@color/red" 指示器的颜色...app:tabIndicatorHeight 指示器的高度,去掉指示器的话直接设置0dp app:tabMode="fixed" 显示的模式,fixed表示平分显示,scrollable滑动显示 app...color/black" 选中文字颜色 app:tabTextColor="@color/gray" 未选中文字颜色 app:tabMinWidth="50dp" 最小宽度,可以控制tab的宽度,包括指示器的宽度
的一个关于当前页面、上一个页面和下一个页面的一个可交互的指示器。...(R.id.viewpager_tv_three); // 初始化指示器位置 initCursorPosition(); mPageList =...mViewPager.setCurrentItem(0); } private void initCursorPosition() { // 获取指示器图片宽度...matrix.postTranslate(mOffset, 0); mCursorImg.setImageMatrix(matrix); // 计算指示器图片的移动距离...其中initCursorPosition()方法主要初始化指示器图标的位置,需要根据屏幕宽度来计算游标显示位置。然后同样设置了页面监听器,主要根据滑动到的页面把游标滑动找指定位置。
领取专属 10元无门槛券
手把手带您无忧上云