博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewPager+滑动条显示
阅读量:6216 次
发布时间:2019-06-21

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

ViewPager+标签页的显示效果做的很多,很常见。这里做的是,滑动ViewPager的时候,有一条滑动条显示,一定时间后,自动隐藏。

先在xml文件中,写一个textview,用于显示滑动条,背景就是滑动条显示的UI切图。

复制代码

代码中imageRIds.length是数据长度,根据实际获取的数据分配每一个textView实际应该显示多宽

这里转换成ViewGroup.MarginLayoutParams,是因为只有这个布局参数才能找到设置margin方法复制代码

int width = getWindowManager().getDefaultDisplay().getWidth();int lineWidth = width / imageRIds.length;layoutParams = (ViewGroup.MarginLayoutParams) tvline.getLayoutParams();layoutParams.width = lineWidth;tv_line.setLayoutParams(layoutParams);复制代码

此处有一个小细节,如果是在Activity之中,

int width = getWindowManager().getDefaultDisplay().getWidth();没有问题。

如果在Fragment中使用。换成

int width = activity.getWindowManager().getDefaultDisplay().getWidth();这里用activity是因为getActivity()可能为空。复制代码

所以在fragment中onAttach方法中,把activity赋值给成员变量。private Activity activity;@Overridepublic void onAttach(Activity activity) {    this.activity = activity;    super.onAttach(activity);}复制代码

在ViewPager滑动的时候,动态设置textView的margin实现跟随Viewpager滑动效果,设置滑动监听。

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {    @Override    public void onPageScrolled(int i, float v, int i1) {        if (layoutParams != null && v != 0){            tv_line.setVisibility(View.VISIBLE);            layoutParams.setMarginStart((int) ((i + v) * layoutParams.width));            tv_line.setLayoutParams(layoutParams);        }    }    @Override    public void onPageSelected(int i) {        handler.postDelayed(new TVRun(),1000);    }    @Override    public void onPageScrollStateChanged(int i) {          }});复制代码

此处发了一个延时handler,是ViewPager滑动结束以后,一秒钟之后隐藏滑动条。

class TVRun implements Runnable{    @Override    public void run() {        tv_line.setVisibility(View.GONE);    }}复制代码

转载于:https://juejin.im/post/5b7d11ab518825430d26b3c7

你可能感兴趣的文章
python其实很简单
查看>>
Java虚拟机-第一篇-Java内存区域与内存溢出异常
查看>>
android studio导入Jar包(以android-smart-image-view为例)
查看>>
Java 列表Bean元素去重
查看>>
【OCP|052】OCP最新题库解析(052)--小麦苗解答版
查看>>
查看当前服务器中的所有的topic,创建topic,删除topic,通过shell命令发送消息,通过shell消费消息,查看topic详情,对分区数进行修改...
查看>>
ORA-12638 身份证明检索失败
查看>>
Flatscript: ES7 `async`/`await` 替代实现
查看>>
Centos安装ffmpeg
查看>>
spark-调节executor堆外内存
查看>>
WWDC 2017 Feature 102 Platforms State of the Union
查看>>
Drupal 7.34/6.34 发布 修复安全漏洞(SA-CORE-2014-006)
查看>>
Objective-C中的一些细枝末节(更新)
查看>>
CodeIgniter框架同时连接多个数据库
查看>>
滔哥折腾:Win8下使用VirtualBOX虚拟机最新版安装OS X 10.9 Mavericks
查看>>
HQL select 总结
查看>>
离散余弦变换(含源码)
查看>>
Android基础内容提供者,内容观察者
查看>>
Oracle VM Virtualbox 中的网络连接类型
查看>>
MySQL创建数据库设置字符编码
查看>>