如图,上方的导航栏是不是很酷,首先它本身是可以滑动的,然后右侧有一个可以查看所有Tab的按钮,然后他和下方的ViewPager还是联动的,可以通过点击它切换ViewPager,并且ViewPager滑动,它也会随着改变,还有指示条。如果要实现这个效果怎么办?

当然,完全可以自己定义实现,但是有太多的细节需要去考虑到,还得手动调整指示条的位置,这还不是问题,问题是滑动到头怎么办,而且需求要求Tab项不确定,指示条长度就不一样,滑动范围也不确定,不过还是可以实现的。但是想想就觉得代码太冗余了...

于是我想,可不可以用ViewPager就能实现?

上方的Tab用PagerTabStrip去实现,但是一想,不行啊,右侧的查看更多怎么办?后来一想,我可以用FrameLayout来实现,因为ViewPager和PagerTabStrip是一体的,所以我把整个ViewPager先放入FrameLayout里,然后在右上角摞上一个ImageView就可以实现效果了!联动和效果都有了。

可是,问题又出现了,PagerTabStrip的tab之间的距离他封装的有一个最小的距离,而且无法修改,所以他的setTextSpacing方法只能调整的越来越大,却不能比他设置的最小值还小,所以我就...

所以这条路就走不通了。

我记得我之前实现过可以让标题栏收缩在屏幕之中显示的,然后我就回去看了笔记,果然!

不过不是只用ViewPager就能实现的,而是用TabLayout和ViewPager结合来实现的。

首先,在xml中定义TabLayout(和“查看更多”的按钮一块布好局):

android:layout_width="match_parent"android:layout_height="40dp"android:orientation="horizontal">android:id="@+id/tabLayout"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:background="@color/main"app:tabTextAppearance="@style/TabStyle">android:id="@+id/more"android:layout_width="40dp"android:layout_height="40dp"android:background="@drawable/more_divider"android:padding="10dp"android:src="@drawable/more"/> 然后代码中设置:

//下面这么写如果和ViewPager一绑定就会不显示文字,因为他会先remove掉之前的所有Tab,然后new,把ViewPager的标题拿//过来用,倘若你的ViewPager没有设置标题,则就会看不见了// //调接口获取所有咨询标题// mTitles.add("昌吉");// mTitles.add("体育");// mTitles.add("军事");// mTitles.add("历史");// mTitles.add("轻松一刻");// mTitles.add("NBA");// //给TabLayout添加标题// for (int i = 0; i < mTitles.size(); i++) {// mTabLayout.addTab(mTabLayout.newTab().setText(mTitles.get(i)));// }//使Tab可滚动mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);//设置指示条颜色mTabLayout.setSelectedTabIndicatorColor(Color.parseColor("#418DEB"));//设置文字颜色mTabLayout.setTabTextColors(Color.BLACK,Color.parseColor("#418DEB"));//将ViewPager和TabLayout联系起来mTabLayout.setupWithViewPager(mViewpager); 这是我一开始这么写的,发现Tab的文字不见了,但是指示条还在,然后还可以正常滑动,而且不蹦。

然后我把

//将ViewPager和TabLayout联系起来mTabLayout.setupWithViewPager(mViewpager);

这一句屏蔽了,发现又能显示了!

然后就开始百度,发现了大神的解决方法->点击打开链接

原来如果你和ViewPager绑定之后,他会先remove掉之前的所有Tab,然后new出新的Tab,把ViewPager的标题拿过来用,倘若你的ViewPager没有设置标题,则就会出现看不见了文字的情况了。

所以,改成下面这样写:

//使Tab可滚动mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);//设置指示条颜色mTabLayout.setSelectedTabIndicatorColor(Color.parseColor("#418DEB"));//设置文字颜色mTabLayout.setTabTextColors(Color.BLACK,Color.parseColor("#418DEB"));//将ViewPager和TabLayout联系起来mTabLayout.setupWithViewPager(mViewpager);//在上一行代码“mTabLayout.setupWithViewPager(mViewpager);”之后添加TabmTitles.add("昌吉");mTitles.add("体育");mTitles.add("军事");mTitles.add("历史");mTitles.add("轻松一刻");mTitles.add("NBA");//这里的mViews一定要和mTitle长度一致(从同一个接口返回的List里取)for(inti = 0;i < mViews.size();i++) {

mTabLayout.getTabAt(i).setText(mTitles.get(i));}

也可以在xml中设置TabLayout的属性:

app:tabTextAppearance="@style/TabStyle">

到此,完美实现效果!

最后,提一下,ViewPager添加View,尽量不要用inflate来添加,改用在代码中new的形式添加,可以少定义好多布局,而且inflate会很耗时间!

提供一种思路:

private voidinitViews() {

mViews= newArrayList<>();for(inti = 0;i < 6;i++) {

//要添加的ViewLinearLayout pager = newLinearLayout(getActivity());LinearLayout.LayoutParams params = newLinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);pager.setOrientation(LinearLayout.HORIZONTAL);//官方下拉刷新finalSwipeRefreshLayout refreshLayout = newSwipeRefreshLayout(getActivity());refreshLayout.setLayoutParams(params);refreshLayout.setOnRefreshListener(newSwipeRefreshLayout.OnRefreshListener() {

@Overridepublic voidonRefresh() {

refreshLayout.setRefreshing(false);}

});//刷新的时候变化的颜色refreshLayout.setColorSchemeColors(Color.parseColor("#418DEB"),Color.BLUE,Color.BLACK);//刷新里面的ListViewListView listView = newListView(getActivity());listView.setLayoutParams(params);MyBaseAdapter mListViewAdapter = newMyBaseAdapter();listView.setAdapter(mListViewAdapter);refreshLayout.addView(listView);pager.addView(refreshLayout);mViews.add(pager);}

} 来自我的工作项目:掌上昌吉。

android 防腾讯新闻标题栏,仿腾讯视频android客户端上方的标题栏相关推荐

  1. 腾讯新闻android2.3,腾讯新闻Android客户端更新 加入投票功能

    腾讯近日更新了其应用<腾讯新闻>安卓版,加入了新闻专题,投票两大新功能,同时还优化了用户界面,大家在浏览各类新闻方面又有了新的选择. 新版特点: 1.新闻专题:热门新闻专题呈现,聚合浏览, ...

  2. 和菜头-和腾讯新闻哥谈谈腾讯价值观

    本文来源于和菜头 和菜头-和腾讯新闻哥谈谈腾讯价值观 昨天我发布了<和腾讯新闻哥谈谈腾讯价值观>一文,在后台看到许多鹅厂同学的留言,许多人表示了相当程度的愤怒.也听说在内网的KM系统有人专 ...

  3. Android 使用ViewPager2+ExoPlayer+VideoCache 实现仿抖音视频翻页播放

    1. 实现效果 效果图中,视频没有铺满 是因为使用了ExoPlayer的RESIZE_MODE_FIT模式, 虽然使用RESIZE_MODE_FILL模式可以填充整个父布局,但是本Demo中使用的视频 ...

  4. python爬取腾讯新闻_Python采集腾讯新闻实例

    目标是把腾讯新闻主页上所有新闻爬取下来,获得每一篇新闻的名称.时间.来源以及正文. 接下来分解目标,一步一步地做. 步骤1:将主页上所有链接爬取出来,写到文件里. python在获取html方面十分方 ...

  5. python爬取腾讯新闻_Python 实现腾讯新闻抓取

    原博文 2012-08-14 09:56 − 思路: 1.抓取腾讯新闻列表页面: http://news.qq.com/ 2.提取详细页面的url:http://news.qq.com/a/20120 ...

  6. android高仿微信小视频,Android仿微信录制小视频

    本文实例为大家分享了Android仿微信录制小视频的具体代码,供大家参考,具体内容如下 先上张图片看看效果 简单叙述下 首先通过Camera类调用系统相机 通过surfaceview绘制出来 通过Me ...

  7. android防拆机方案,拆机狂人必备 iFixit Android客户端试用

    作者:Aimo 相信不少IT产品爱好者都知道iFixit,即使不知道的人在不经意见也会看到过iFixit的作品--iFixit是一家著名的IT产品维修网 站,新IT产品流出之时的第一手拆机资料往往都来 ...

  8. android抖音loading动画,高仿抖音视频加载动画

    动画效果: loadingView.gif 由于GIF图压缩的问题看起来不好看,在真机和模拟器上看是没有问题的 这个动画实现起来还是很容易的,原理其实就是利用CGAffineTransformScal ...

  9. android 投票功能,腾讯新闻Android客户端更新 加入投票功能

    腾讯近日更新了其应用<腾讯新闻>安卓版,加入了新闻专题,投票两大新功能,同事还优化了用户界面,大家在浏览各类新闻方面又有了新的选择. 新版特点: 1.新闻专题:热门新闻专题呈现,聚合浏览, ...

最新文章

  1. 6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
  2. 一文读懂 CNN、DNN、RNN 内部网络结构区别
  3. Oracle监听配置
  4. NMAP分布式扫描工具dnmap
  5. Erlang China 大会 - CN Erlounge III - 发起
  6. #error使用分析
  7. POJ:3579-Median(二分+尺取寻找中位数)
  8. 限时抢购促销海报设计没想法,看这里!眼见的倒计时紧迫感
  9. 如何设置路由器的中继模式-机器人局域网组网攻略
  10. 计算机加权限加密,局域网文件访问权限设置加密的使用方法
  11. Pygame实战:牛,几千行代码实现《机甲闯关冒险游戏》,太牛了(保存起来慢慢学)
  12. Android 版本4.12 微信,安卓4.12微信下载
  13. andorid自动化测试之Monkey(上)
  14. 嵌入式--接口--MIPI接口
  15. 收集的数码摄影教程_我是亲民_新浪博客
  16. 直流电源线缆 高速电缆 分类
  17. 相干载波同步误差对相干解调的影响
  18. 在c语言求30角的正弦值,正弦及30度角的正弦值.doc
  19. PostMan script教程
  20. Android基于卷积神经网络的数字手势识别识别数字手势0-10 Android studio编译

热门文章

  1. php 多图上传编辑器,ThinkPHP5整合LayUI编辑器图片上传
  2. 谷歌发布android+8.2,谷歌Pixel 2代三款新机齐曝光:骁龙835+Android 8.0
  3. 飞畅科技-工业以太网交换机组网方式介绍
  4. 【渝粤题库】国家开放大学2021春3929电气安全技术题目
  5. [渝粤题库]陕西师范大学《幼儿园课程》(专科)作业
  6. 亿佰特物联网通信专家:蓝牙模块和 Zigbee协议模块的区别
  7. 蓝桥杯基础模块1:LED跑马灯
  8. 第二章 Java基本语法(一)
  9. java 异常堆栈日志分析_Java 进阶之路:深入解读 Java 异常堆栈丢失原因
  10. 一个兼容所有浏览器的阻止事件冒泡方法