问题标签 [onmeasure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1266 浏览

android - 覆盖 OnMeasure

我使用以下 xml 制作了一个自定义视图

我想将它们的多个副本插入带有 Linearlayout 的 ScrollView。

由于屏幕尺寸不同,我知道我们必须使用 onmeasure 覆盖相应地缩放它们。

使用上面的代码,我总是得到 wSpec = 0 和 hSpec = 382。

我怎样才能获得我想将我的 CustomView 插入的 LinearLayout 的大小?

谢谢

0 投票
3 回答
6833 浏览

android - 为什么在我的自定义视图中调用了两次 onMeasure()?

下面是我的自定义代码View

XML 布局:

我的代码CustomView.java

测试活动代码:

日志输出:

我搜索了 StackOverflow,但没有人给出明确的答案。有人可以帮助我吗?

0 投票
1 回答
166 浏览

android - 中断 onMeasure 循环以显示错误(Android)

我已经覆盖了View 的方法以提供一些自定义行为,如果在我的自定义调用期间发生错误getView(int, View, ViewGroup),我希望能够中止递归,并立即停止尝试呈现该 Activity 以支持另一个显示错误的 Activity .measure() -> onMeasure() -> measureChildStuff() -> child.measure()getView()

不幸的是,Android 似乎坚持在听我改变 Activity 的意图之前完成测量堆栈。有没有办法可以强制 Intent 立即启动?例如,我可以通过覆盖来实现任何目标Context.startActivity()吗?

0 投票
1 回答
1760 浏览

android - android - 自定义视图的宽度和高度为 0

我正在尝试在垂直 LinearLayout 中创建一个包含两个 TextView 的自定义视图,但我完全不知道它是如何工作的。

目前什么都没有出现,因为我的 onDraw 方法没有被调用。我认为这是因为我的视图(LinearLayout?)的宽度和高度均为 0。

我想我应该覆盖我的 onMeasure,但是在尝试 setMeasuredDimension(100,100) 之后这仍然不起作用。

我正在尝试在视图中膨胀一个 xml 并在其中使用两个 TextView。

一个解释也很好,所以我希望能明白这一切是如何运作的。

谢谢

size_button.xml

尺寸按钮.java

ProductFragment.java - 将按钮添加到片段的位置

0 投票
0 回答
2022 浏览

android - 自定义 View Wrap 内容覆盖 OnMeasure

我创建了一个自定义视图,其中绘制了位图。问题是自定义视图占据了整个屏幕,无论我设置它的布局宽度/高度还是它的父级。

我一直在浏览论坛,并阅读了有关覆盖 onmeasure 方法的信息,但对我来说返回零,所以现在宽度和高度设置为零。

这是我到目前为止所做的:

编辑

完整的 xml:

在我设置自定义视图的片段中,如下所示:

然后在我的自定义视图类中我调用 onMeasure 如下:

wrapHeight 和 wrapWidth 返回为零。有人可以提供一些建议吗?我是自定义视图等方面的新手,所以我很感激你的挖掘;)

****EDIT**** 我应该补充一点,这是一个滑块,所以在我的自定义视图中我使用 onscroll 方法......我想这可能会改变一些事情。所以我有一个框架图像,我的视图在其下滚动,所以我想我需要将视图的高度设置为框架高度的两倍?

任何人都可以帮忙吗?

布局结构

布局结构

0 投票
0 回答
626 浏览

java - 自定义视图onMeasure中的奇怪问题

我有一个自定义视图从RelativeLayout大小应该是正方形的地方扩展,以及一个背景图像,match_parent它的宽度和高度是它的孩子。还有一个按钮应该水平居中并与背景图像的底部对齐。

伊姆古尔

一切正常,直到我添加一些边距并将我的设备旋转到横向模式。在横向模式下,容器的宽度不知何故大于其高度,如下所示:

伊姆古尔

自定义视图只是一个从 RelativeLayout 扩展的简单类,我已经重写了它的onMeasure方法,如下所示:

以及视图的布局:

谁能指出我在这里做错了什么?如果这个问题之前已经回答过,有人可以给我一个链接吗?搜索后似乎找不到任何类似的问题。我正在为 API 11 开发并在运行 Android 4.04 的三星 Galaxy Tab 8.9 上进行测试。

谢谢!

0 投票
3 回答
2425 浏览

java - 如何调用 onMeasure 方法?- 安卓

我有一种活动,一种观点。此视图的目的是显示一个方形网格。正方形边将等于屏幕宽度除以水平存在的正方形数量。

我已经在努力创建具有自定义高度的视图,我这样做了:

问题是,当我调试时,squareSide 变量的值为 0。我认为 onMeasure() 可能在 createGuideLines() 之后被调用。如果我之前调用它,它会解决我的问题吗?我在文档上读到有一个方法 requestLayout() 调用 onMeasure() 方法,但我不知道如何实现它。

谢谢你的时间。

0 投票
0 回答
6140 浏览

android - 更改布局宽度和高度时如何调用onMeasure

嗨,我正在画画布。为此,我使用自定义视图Activity(extends View)将此视图添加到ScrollViewmainactivity(extends Activity) 中以滚动画布,并且我的自定义视图宽度和高度为 700*3000,并且在运行时自定义视图宽度和高度增加。

现在我如何onMeasure()在更改宽度和高度时调用。

onMeasure()在自定义视图调用时调用。但是在运行时它不会被调用,除非onResume()调用。

对于调用onMeasure(),我使用measure(width,heigt);in onTouch()

但它没有被调用。是否可以onMeasure()在运行时调用。那么,如何?任何人给我一个解决方案。

0 投票
0 回答
672 浏览

android - Android - 如何检查可扩展高度 GridView 中的滚动位置

expandable height GridView在我的片段中使用。onMeasure它是带有重写方法的默认 GridView 。这允许GridViewScrollView其中使用此 GridView 包装片段。

但是我在检查GridView屏幕上显示的项目时遇到了问题。所有可以帮助我的方法都不适用于覆盖,因为所有项目在创建onMeasure时一次显示。GridView

getScrollY() - 总是返回 0,因为 GridView 已经被覆盖的 onMeasure 扩展并且不会滚动。

onScrollListener's参数只是从 0 到最后一个项目的一系列可见子视图,因为它们都显示(通过 onMeasure),而不是实际的滚动位置。

0 投票
1 回答
5887 浏览

android - onMeasure 被调用了 1,500 多次

我最近注意到我的应用程序存在严重的性能问题。我基本上有以下布局...... 在此处输入图像描述

描述
简而言之,有一个ViewPager将 3 RelativeLayouts 保存为页面的 a。在每个页面内都有一些TextViews。我最近注意到,当我在上面输入以执行快速 SQL 查询以自动完成时EditText,会出现很多延迟。TextWatcher当我输入文本时,我的 HTC One M8 卡顿和滞后,但我知道查询速度并不慢,因为我测量查询只需要大约 7 毫秒。

我使用了方法分析、Systrace 和普通的旧Log调试,并得出结论,每次我在 A、B 和 C 中的 s上进行的EditText大约1,700次调用中键入一个字符。累积起来,只有大约 15 个独立的 s页面。我注意到每个都被调用了数百次,而不是像通常那样只调用一次或两次。onMeasureTextViewRelativeLayoutTextViewonMeasure

问题
我不知道为什么EditText在页面 B 中输入会导致TextView页面 A 和 C 中的其他 s 也被“重新测量”。更重要的是,是否有人对为什么onMeasure如此频繁地被调用有见解?而且,有谁知道显着减少调用次数的解决方案onMeasure

细节
这可能会有所帮助:我实际上能够onMeasure通过删除 2 将调用次数减少到大约 900,RelativeLayout这可能表明onMeasure调用的传播开始于ViewPager.