当前位置: 首页 > news >正文

优仔电话手表网站手机制作最简单钓鱼网站

优仔电话手表网站,手机制作最简单钓鱼网站,西宁网站建设的企业,wordpress图片优化前言 此场景为 NestedScrollView 嵌套多个布局 ,大致结构为 NestedScrollViewTabLayoutViewPagerfragment 其它View,如下图 , 一、ViewPager 设置高度才会显示内容问题 原因:NestedScrollView 计算高度先于 ViewPager 渲染前,所…

前言

此场景为 NestedScrollView 嵌套多个布局 ,大致结构为 NestedScrollView+TabLayout+ViewPager+fragment +其它View,如下图 ,


一、ViewPager 设置高度才会显示内容问题

原因:NestedScrollView 计算高度先于 ViewPager 渲染前,所以 ViewPager 的高度才会一直是0,所以设定高度才会显示,但这不符合实际开发需求,实际开发需要根据子布局的高度填充内容,一般 ViewPager 的高度为 wrap_content,所以此时设置 NestedScrollView  的fillViewport 属性 android:fillViewport="true"

    <android.support.v4.widget.NestedScrollViewandroid:fillViewport="true"android:layout_width="match_parent"android:layout_height="wrap_content"></android.support.v4.widget.NestedScrollView>

二、其它View 超出屏幕不显示问题

但是设置 android:fillViewport="true"  后发现 其它View 不显示了 ,这是因为该属性它用于在ScrollView中填充视图的高度,以便在内容不足以填满屏幕时也能填充整个屏幕。所以此时就不能使用该属性,而是 ViewPager 持根据子页面(Fragment或View)的高度动态调整自己的高度,但原生又不支持根据子布局自适应高度,所以 ViewPager 需要重写onMeasure方法以支持根据内容动态调整高度。

public class DynamicHeightViewPager extends ViewPager {public DynamicHeightViewPager(Context context) {super(context);}public DynamicHeightViewPager(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int height = 0;for (int i = 0; i < getChildCount(); i++) {View child = getChildAt(i);child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec((int) Math.max(height, child.getMeasuredHeight()), MeasureSpec.UNSPECIFIED));height = Math.max(height, child.getMeasuredHeight());}super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));}
}

在 onMeasure 方法中 首先,它遍历所有子视图(即ViewPager中将要显示的页面),对于每个子视图,它尝试测量其高度,但这里有一个逻辑上的小错误。在第一次调用child.measure时,child.getMeasuredHeight()很可能为0,因为子视图还没有被真正测量过。这里假设是想要基于之前的测量结果(如果有的话)来尝试设置一个合理的起始高度,但实际上由于初次测量时所有子视图的getMeasuredHeight()都可能是0,这个逻辑可能并不如预期那样工作。一个更稳妥的做法是直接给子视图一个较大的初始高度或完全不受限制的高度(如MeasureSpec.UNSPECIFIED),然后根据实际需要调整。然后,它更新height变量为当前找到的最大子视图高度。最后,它使用找到的最大高度作为ViewPager的高度,并调用super.onMeasure来设置最终的测量规格,

在布局中直接替换 ViewPager 即可,


总结

如果对你有所帮助的话,不妨 点赞收藏
如果你有什么疑问的话,不妨 评论私信
青山不改,绿水长流 ,有缘江湖再见 ~

http://www.yayakq.cn/news/928467/

相关文章:

  • 做app的网站有哪些功能个人博客html模板
  • 广东融都建设有限公司 公司网站品牌营销和品牌推广的区别
  • 邳州网站开发长春做网站多少钱
  • 婚纱影楼网站模板vps网站助手
  • 伊犁北京网站建设青岛制作网站
  • 门户网站有哪几个西安建设工程交易信息网
  • 电商网站设计公司力荐亿企邦天津品牌网站建设公司
  • 网站建设洽谈问题如何建立一个网站 供客户选图
  • 数据分析网站怎么做系统开发板
  • 快速建设房产网站免费网站大全黄页动漫
  • 常州外贸网站建设wordpress 获取当前文章标题
  • 河南省建设厅网站职称网视频网站设计模板
  • 遵义花果园网站建设大学网站建设策划书
  • 中国网站建设市场分析wordpress百度模板
  • 中山 网站建设wordpress 积分下载
  • 比一网站建设logo设计说明
  • 辽宁网站建站优化公司电商分销
  • 网站建设工作汇报标签下载 wordpress
  • 微网站开发要多少钱专业做网站建设公司怎么样
  • 找公司做网站有什么好处衡水城乡建设局网站首页
  • 网站怎么让百度收录一张图做封面网站换域名
  • 昆明网站策划网站的规划与建设案例分析
  • 网站在浏览器的图标怎么做昆明网页设计培训学校
  • 镇江市住房城乡建设局网站asp.net网站开发与应用
  • 网站开发需要用到哪些软件模板网站的域名是什么意思
  • 聊城哪有做网站的软文推广渠道
  • 长沙制作网站访问数据库的网站开发语言
  • 网站管理系统安装新的网站设计公司
  • 可以在几个 网站备案学习网站开发体会与感想
  • 高端网站建设四川大型车网站建设