首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获得有很多子元素的ScrollView的高度?

要获得一个具有许多子元素的ScrollView的高度,可以通过以下步骤实现:

  1. 首先,确保ScrollView的布局文件中设置了正确的高度属性,例如使用match_parent或具体的像素值来设置高度。
  2. 在代码中,获取ScrollView的实例,并使用getViewTreeObserver()方法获取视图树的观察者。
  3. 使用视图树观察者的addOnGlobalLayoutListener()方法添加一个全局布局监听器。
  4. 在监听器的onGlobalLayout()方法中,可以获取ScrollView的高度。可以使用getHeight()方法来获取高度值。

以下是一个示例代码:

代码语言:txt
复制
ScrollView scrollView = findViewById(R.id.scrollView);
ViewTreeObserver viewTreeObserver = scrollView.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        int scrollViewHeight = scrollView.getHeight();
        // 在这里可以使用scrollViewHeight进行后续操作
        // ...
        
        // 在获取到高度后,建议移除监听器,以免重复调用
        scrollView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
    }
});

这样,你就可以通过监听ScrollView的全局布局变化来获取其高度。请注意,在获取到高度后,建议移除监听器,以免重复调用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CSS-自定义高度的元素背景图如何自适应以及after伪类在ie下的处理

遇到一个效果,之前没有考虑清楚,设置了固定高度,到了后边,产品要加长,我就觉得设计得从新弄张长点的背景图!这不多余么?...于是就有了这个问题和如下的一连串问题。 .最外层父元素{height:auto;background:url(.....本来想用css3的background-image属性的多个背景图的功能,可是想想还要兼容ie就很烦 于是利用了css的伪类选择器来完成这一巨大的使命。...将鼠标放在任务栏的开发人员工具上,出现一片透明的区域,选中之后却出不来。将鼠标移动到开发人员工具的缩略图上,右键-最大化,工具就全屏出现了。.../images/hot_f_bg_g.jpg) no-repeat bottom center;} ps:高度的设置是图片的高度 ------------------------------------

1.3K80
  • Flutter 视图布局(二)

    看完之后发现,原来 ListBody 是一个可以设定轴方向的 多子元素列表,但是需要一个可以强制范围的容器来装载它。...如果你需要自己决定如何保留子元素的状态,那么就把 addAutomaticKeepAlives 和 addRepaintBoundaries 关了自己写去。...以上就是 ListView 属性的使用说明了,但是你可能会问了,这些子元素你写那么多不现实啊,真正使用到的时候肯定都是按需生成的,不然如果有很多子元素不可能都 copy paste一遍吧?...此构造函数只能适用于子级数量确定的列表视图。 Ok,那我们就来看看代码是如何实现的。 其实 separated 和 builder 差别并不大,这里我只做了简单的修改就实现了分割线。...最后总结 flutter 基本上为你考虑了一些相关场景使用的实现,所以可以很方便的使用这些内容,但是考虑过细自然也就会觉得需要了解的内容就过多。

    3K10

    Flutter完整开发实战详解(七、 深入布局原理)

    ( ̄▽ ̄) 一、单子元素布局 在 Flutter 单个子元素的布局 Widget 中,Container 无疑是被用的最广泛的,因为它在“功能”上并不会如 Padding 等 Widget 那样功能单一...二、多子元素布局 事实上“多子元素布局”和单子元素类似,通过“举一反三”我们就可以知道它们的关系了,比如: Row、Colum 都继承了 Flex,而 Flex 继承了MultiChildRenderObjectWidget...RenderBox (RenderObject) Row/Colum/Flex RenderFlex Stack RenderStack Flow RenderFlow Wrap RenderWrap 同样“多子元素布局...三、多子元素滑动布局 滑动布局作为 “多子元素布局” 的另一个分支,如 ListView 、GridView、Pageview ,它们在实现上要复杂的多,从下图一个的流程上我们大致可以知道它们的关系:...疼”的自定义滑动 CustomScrollView ,它继承了 ScrollView,可通过 slivers 参数实现布局,这些 slivers 最终回通过 Scrollable 的 buildViewport

    1.3K20

    【IOS开发基础系列】UIScrollView专题

    某些对象是用来管理内容显示如何绘制的,这些对象应该是管理如何平铺显示内容的子视图,以便于没有子视图可以超过屏幕的尺寸。就是当用户滚动时,这些对象应该恰当的增加或者移除子视图。          ...1.3 内存重用         事件处理看过了,就要考虑scrollView如何重用内存的,下面写了一个例子模仿UITableView的重用的思想,这里只是模仿,至于苹果公司怎么实现这种重用的,他们应该有更好的方法...,contentsize.width是内容的宽度,contentsize.heght是高度,contentsize是UIScrollView的一个属性,它是一个CGSize,是由核心图形所定义的架构,那定义了你可以滚轴内容的宽度和高度...编写很多子类是很沉闷的事情,你最后会有很多无法重复使用的单独视图,而MVC的视图部分的一个重点是视图是可以在不同的控制器和不同的模式之中重复使用的,如果我们把所有逻辑都放在视图中,它减少了可复用性。        ...2.3.2 通过委托来扩展ScrollView的行为(常用的)         委托是一个单独的对象,协议,定义了委托会实现的一系列功能的Objective-C协议,它创建了一系列很清晰的撤销点,在那里你能定制行为和外观

    65830

    Android开发的那些坑和小技巧

    一开始我怀疑是PhotoView的bug,找了半天无果。要命的是不知如何try,老是crash。后来才知道是android遗留下来的bug,源码里没对pointer index做检查。...所以你的点击Item就失效了,这个时候你就要根据你的需求,是给你的item的最外层layout设置点击事件,还是给你的某个布局元素添加点击事件了。...6、ScrollView嵌套ListView 这样的设计是不是很奇怪?两个同样会滚动的View居然放到了一起,而且还是嵌套的关系。...需要解决ListView放到ScrollView中的滑动问题和RecyclerView的显示问题(如果RecyclerView的高度没法计算,你是看不到内容的)。...后来才发现,这个圆形矩形包含的内容太多了,已经超出了手机的高度,而且可以滑好几页。

    1.1K30

    ScrollView+ListView滚动冲突,没有滑动效果 解决办法

    问题背景 今天做个界面需要在整个布局都要滚动的基础上添加一个ListView元素,整个布局滚动当然用ScrollView。...但是在ScrollView+ListView的布局画好后,发现整个界面都无法滚动,而且ListView只显示了第一条元素。...问题分析: 由上面那个提示可以看到,正常情况下ScrollView下是不允许再包含一个可滑动的View的,为什么呢?...但是ListView只能显示部分元素,这不是我们想要的结果。 所以就需要一种方法可以根据ListView中Item数量,动态设置ListView的height,使全部item得到显示。...此方法是为了定死listview的高度就不会出现以上状况 * 算出listview的高度 */ public static void setListViewHeight(ListView

    1.2K10

    VVeboTableView 源码解析

    虽然样式比较复杂,但是滑动起来性能却很好:我在我的iphone 4s上进行了Core Animation测试,在滑动的时候帧率没有低于56,而且也没有觉得有半点卡顿,那么他是怎么做到的呢?...1.2 将cell高度和 cell里的控件的frame缓存在model里 这一步我们需要在字典转模型里统一计算(不需要看代码细节,只需要知道这里在模型里保存了需要保存的控件的frame和整个cell的高度即可...:原贴(subData)的存在与否),来逐渐叠加cell的高度。...[cell draw]; } 2.2 监听tableview的快速滚动,保存目标滚动范围的前后三行的索引 知道了如何使用needLoadArr,我们看一下needLoadArr里面的元素是如何被添加和删除的...needLoadArr的末尾 [needLoadArr addObjectsFromArray:arr]; } } 知道了如何向needLoadArr里添加元素,现在看一下何时(

    1.2K10

    Flutter 视图布局-前言

    不过说来惭愧我也学了一月有余,对于 Flutter 的整体认识程度还不是很高,还不能很全面的去讲解整个 Flutter 的体系。...在 Flutter 中主要的布局方式有两种: 多子类元素布局 单子类元素布局 还有一个比较特殊的 LayoutBuilder,这个主要是构建一个可以依赖父窗口大小的 Widget 树。...多子类元素布局 多子类元素布局的 Widget 有10种: Row 在水平方向上排列子元素的列表。 Column 在垂直方向上排列子元素的列表。...IntrinsicHeight 一个 Widget,它将它的子元素的高度调整其本身实际的高度。 AspectRatio 一个 Widget,试图将子元素的大小指定为某个特定的长宽比。...如果宽度或高度为NULL,则此 Widget 将调整自身大小以匹配该维度中的孩子的大小。

    2.3K110

    CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar-Android M新控件

    原因是:它是组织它众多子view之间互相协作的一个ViewGroup。 CoordinatorLayout 的神奇之处就在于 Behavior 对象。怎么理解呢?...CoordinatorLayout使得子view之间知道了彼此的存在,一个子view的变化可以通知到另一个子view,CoordinatorLayout 所做的事情就是当成一个通信的桥梁,连接不同的view...enterAlwaysCollapsed 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度 exitUntilCollapsed...的title return mFragmentsTitles.get(position); } } 总结 为了使得Toolbar可以滑动,我们必须还得有个条件,就是CoordinatorLayout...布局下包裹一个可以滑动的布局,比如 RecyclerView,NestedScrollView(经过测试,ListView,ScrollView不支持)具有滑动效果的组件。

    2.2K30

    MJRefresh 源码阅读

    里面有很多的类,咋一看好像很复杂,其实它实现的核心只有一个类,其它的都是对它进行一层一层的封装,我们可以用官网的一张图来表示MJ的结构 MJ结构图.png 从上图可以看出,最基础的类就是MJRefreshComonent...// 预防view还没显示出来就调用了beginRefreshing self.state = MJRefreshStateRefreshing; } } 代码注释原作者已经写的很详细了...// 表格的高度 CGFloat scrollHeight = self.scrollView.mj_h - self.scrollViewOriginalInset.top - self.scrollViewOriginalInset.bottom...view的高度 bottom -= deltaH; } self.lastBottomDelta = bottom - self.scrollView.mj_insetB...MJRefreshBackFooter的footer的y值最小是scrollView的高度 总结:我们参照MJ实现下拉刷新大概需要以下步骤 自定义一个View 将view加载到scrollView上,并在此时对

    1.2K20

    项目需求讨论- 自定义滚轮(第二波新实现)

    用ScrollView 循环有什么问题呢。...问题3因为RecyclerView 的特性,也被解决了。是一个很理想的循环滚动的滚轮。 于是就使用RecycleViewer来进行相关的开发。正式起航。...---- 原理分析 滚轮的高度和Item的高度 比如我们确定一个页面显示5项,item的布局高度为100dp,那滚轮高度就设定为500dp....3.比如只划一部分,如何让它自动滚到相应的Item(重点) 方法还是一样,通过当前获取到的滚到的Y值,然后除以每项的Item的高度,就能知道当前顶部是处于第几项,然后求余数就知道了当前顶部那项有多少是显示的...我来大致解释下:如上图所示,我们现在一个Item是100的高度,那我们现在滑到了第二个的20的位置,那是不是一共滑动了120的距离。

    1.1K20
    领券