首页
学习
活动
专区
工具
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的全局布局变化来获取其高度。请注意,在获取到高度后,建议移除监听器,以免重复调用。

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

相关·内容

2020-11-11:手写代码:如何得有序数组中指定元素个数?

二分查找元素,然后二分查找左边界,再查找右边界,最后右边界减去左边界就是指定元素个数。这道题实际上是如下三道题综合。 1) 在一个有序数组中,找某个数是否存在 。...2) 在一个有序数组中,找>=某个数最左侧位置 。 3) 在一个有序数组中,找<=某个数最右侧位置 。...arr := []int{0, 1, 2, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 7, 8} v := 3 fmt.Println(v, "个数是...int { L := 0 R := len(arr) - 1 M := -1 // L..R mid := -1 //找目标值并且缩小左边界L和右边界R范围...L = mid + 1 } } LL = index //左边界确定下来了 R = RR //原始右边界已经发生变化,需要恢复到以前边界

42510

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

遇到一个效果,之前没有考虑清楚,设置了固定高度,到了后边,产品要加长,我就觉得设计得从新弄张长点背景图!这不多余么?...于是就有了这个问题和如下一连串问题。 .最外层父元素{height:auto;background:url(.....本来想用css3background-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.2K20

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

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

    51830

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

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

    1.1K10

    Android开发那些坑和小技巧

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

    1.1K30

    Flutter 视图布局-前言

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

    2.3K110

    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

    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...MJRefreshBackFooterfootery值最小是scrollView高度 总结:我们参照MJ实现下拉刷新大概需要以下步骤 自定义一个View 将view加载到scrollView上,并在此时对

    1.2K20

    Android实现合并生成分享图片功能

    有时候分享功能都是需要分享一个当前屏幕界面的截图因,以前做校内APP时候用到过,拿出来分享分享, 用以前写过自定义课表软件。 Android 自定义View课程表表格 ?...看到是图片只显示到11节处,下面的没有显示到 所以用到 ScrollView 因此截图节截取ScrollView View图片 一、首先计算出整个ScrollView 高度宽度生成对应大小Bitmap...然后把使用Canvas 将ScrollView 界面绘制上去 // 获取ScrollView 实际高度 h = 0; for (int i = 0; i < scrollView.getChildCount...(android.R.color.white); } // 创建对应大小bitmap Bitmap bitmap = Bitmap.createBitmap(scrollView.getWidth...(), h, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); scrollView.draw(canvas); 二、获取分享头部和底部图片

    1.3K10

    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.1K30

    Android Webview与ScrollView滚动兼容及留白处理方法

    为了解决项目中这些蛋疼问题,试过不少方法,网上有说是网页中使用了不合理overflow,的确,经证实使用不合理overflow的确会造成网页加载后在嵌套在scrollviewwebview只会显示很小高度...合理使用overflow即可处理这个问题,但是webview留白又如何处理呢?问题先放这儿,我们先说说如何在xml布局中放置webview并设置他属性。...其中webview要高度要设置为:wrap_content, 如有必要可设置scrollview第一个子容器这个属性: android:descendantFocusability="blocksDescendants..." 发现问题,问题是如何造成 我们使用webview加载网页,网页可能在我们需要时候会要求我们刷新网页或者加载新链接,这时候问题就显现了。...由于网页页面加载内容长度,或者ajax请求延迟,造成webview只能不断增加高度,而当网页高度变小时,webview高度却不能自适应了,那么只能由我们手动搞些事情了!

    2.7K20
    领券