viewPager 的可滑动 Title
有三种方式:
1. 系统提供的title
缺点:标题在viewpager的滑动过程中也会滑动
实现:在ViewPager布局中添加 PagerTabStrip 或者是 PagerTitleStrip 即可(两者选一个)
2. 自定义 Title 布局为:多个TextView + 一个 ImageView
3. 自定义 Title 布局为:一个LinearLayout 包含多个TextView ,重写onDraw() 方法,画出滑动块
(推荐使用)
public ViewPagerTitleView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
mPaint = new Paint();
mPaint.setColor(context.getResources().getColor(R.color.colorAccent));
mPaint.setStyle(Paint.Style.FILL_AND_STROKE); mLayout = new LinearLayout(context);
mLayout.setOrientation(LinearLayout.HORIZONTAL);
LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 20, 0, 20);
addView(mLayout, params); params1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f); setWillNotDraw(false);
} public void setData() {
for (int i = 0; i < mPager.getAdapter().getCount(); i++) {
TextView textView = new TextView(mContext);
textView.setTextSize(18);
textView.setText(mPager.getAdapter().getPageTitle(i));
textView.setGravity(Gravity.CENTER);
textView.setLayoutParams(params1);
final int finalI = i;
textView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mPager.setCurrentItem(finalI);
}
});
mLayout.addView(textView);
}
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = mLayout.getWidth() / mPager.getAdapter().getCount();
canvas.drawRect(mLayout.getLeft() + (mPosition + mDistense) * width, mLayout.getBottom(), mLayout.getLeft() + (mPosition + 1 + mDistense) * width, mLayout.getBottom() + dp(6), mPaint);
} public int dp(float var0) {
float density = 2.0f;
return var0 == 0.0F ? 0 : (int) Math.ceil((double) (density * var0));
} public void setViewPager(ViewPager pager) {
this.mPager = pager;
mPager.addView(new PagerTitleStrip(mContext));
if (mPager.getAdapter() != null) {
setData();
mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
mDistense = positionOffset;
mPosition=position;
invalidate();
} @Override
public void onPageSelected(int position) {
} @Override
public void onPageScrollStateChanged(int state) { }
});
}
}
viewPager 的可滑动 Title的更多相关文章
- ViewPager取消左右滑动切换功能
ViewPager取消左右滑动切换功能 最近做项目要求某种情况下ViewPager不能滑动,那么我们只需要重写这个方法就可以禁止ViewPager滑动 IndexViewPager.java: imp ...
- 114、Android禁止ViewPager的左右滑动
有时候在开发中会遇到一些“诡异”的要求,比如在ViewPager中嵌入ListView,或者再嵌入一个ViewPager,那么在滑动的时候就会造成被嵌入的XXView不能滑动了,那么现在就把最外层的V ...
- 解决ScrollView嵌套ViewPager出现的滑动冲突问题
/** * 解决ScrollView嵌套ViewPager出现的滑动冲突问题 */ public class ScrollView1 extends ...
- 自定义ViewPager控制是否滑动
package com.lvshandian.menshen.view;/** * Created by zhang on 2016/11/8. * 创建自定义滑动,禁止滑动的ViewPager */ ...
- ViewPager撤消左右滑动切换功能
ViewPager取消左右滑动切换功能 最近做项目要求某种情况下ViewPager不能滑动,那么我们只需要重写这个方法就可以禁止ViewPager滑动 IndexViewPager.java: imp ...
- Android:使用ViewPager实现左右滑动切换图片(图上有点点)
在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...
- Android:使用ViewPager实现左右滑动切换图片 (简单版)
ViewPager,它是google SDk中自带的一个附加包的一个类, 可以使视图滑动. 步骤: 1.引入android-support-v4.jar包,在主布局里加入 <android.su ...
- ViewPagerWithImageDemo【ViewPager如何判断滑动到第一页和最后一页以及弹出对话框功能】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录viewpager滑动的时候弹出对话框的功能(关键功能是滑动弹出对话框后,隐藏对话框的时候当前页可以还原到原位置),顺便判断首页 ...
- Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突?
DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了.今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决 ...
随机推荐
- [转]asp三级select菜单联动(加数据库)
'数据库结构'类别1表名称:a 字段:ID,Name 说明:ID为主键是类别1的ID值,Name为类别1的名称'类别2表名称:aa 字段:ID,aID,Name 说明:ID为主键是类别2的ID值,aI ...
- sql语句把字段中的某个字符去掉
sql语句把字段中的某个字符去掉 )),'http://demo.m-school.net','') 例如: )),'http://192.168.2.180','') )),'http://zpzx ...
- Springmvc controller和jsp页面传值对象类型问题和普通问题
一:JSP-->controller 1.当jsp页面传递的值是对象类型时候比如User.name User.age的user对象传递,需要以下操作 jsp页面提供对应标签的value必须存在且 ...
- Linux超快速安装Ruby on Rails
Linux超快速安装Ruby on Rails 时间 2014-11-25 11:45:11 Flincllck Talk 原文 http://www.flincllck.com/quick-ins ...
- Asp.net mvc 添加Jquery UI
1.使用NuGet下载jquery ui Install-Package jQuery.UI.Combined 2.下载多语言文件: development-bundle/i18n目录下是jquery ...
- AOP和IOC的实现原理(用到的设计模式)
文章来源:http://blog.csdn.NET/longyulu/article/details/36174979 用过spring的朋友都知道spring的强大和高深,都觉得深不可测,其实当你真 ...
- python :表单验证--对每一个输入框进行验证
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- EPSON LQ610K 设置税控盘打印发票的格式
问题困扰 之前一直是手动调试发票打印格式,浪费发票纸张不说,而且还浪费时间.今天在Parrells Desktop里利用Bonjour设置打印机的时候,找到了EPSON网站有这方面的介绍,根据上面的提 ...
- CSS3简单的小技巧:linear-gradient切角画册
关于linear-gradient的语法就不多做介绍了网上到处都是,下面看个小例 我们先做一个渐变,使其让他旋转, <div class="example"> < ...
- 利用PhantomJS进行网页截屏,完美解决截取高度的问题
关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS ...