问题标签 [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 投票
2 回答
29354 浏览

java - 何时调用 View.onMeasure()?

什么时候

叫?我有一个Activity需要在调用onMeasure后执行操作。

我的问题与此处发布的未回答问题相同。View文档指出onMeasure是在requestLayout()被调用时被调用的,当它认为它不再适合其当前范围时,它显然是由视图本身调用的。

但是,这并不能告诉我我的活动何时可以假定我的视图已被测量。我已使用此代码扩展ImageView以形成 TouchImageView。这里建议我应该使用onMeasure方法来缩放我的图像。我希望在测量ImageView后更新TextView的值,以显示图像缩放的百分比。

0 投票
1 回答
119 浏览

android - 手动重新定位同级布局后 TextView 未调整

我有一种情况,我需要手动调整 WebView 的尺寸onMeasure,因为我需要 webview 是方形的并占据屏幕的特定百分比(并且在它被塑造成方形后出现在某个特定的相对坐标处)。webview 的形状确实看起来正确,并且驻留在我想要它的屏幕上(我正在使用setX()and setY(),但是我发现兄弟 TextViews 然后不会重新定位到它们通常应该在的位置,基于它们与 WebView 的相对定位关系。

换句话说,它们是根据原始 WebView 的形状和位置放置的,当 WebView 调整大小时,它们会保持原状。

我还需要做些什么才能让 Android 根据重新定位的 WebView 将它们移动到位吗?还是我也必须手动操纵和塑造它们?

0 投票
1 回答
649 浏览

android - 自定义按钮背景绘制错误(有时)

我有这个自定义按钮,它不会自己绘制,也没有子视图。应用程序启动后,它看起来像这样:

在此处输入图像描述

在这一点上,我不知道哪些代码和详细信息可能与在此处发布相关。事实上,在应用程序更改状态后,按钮会检查是留下VISIBLE还是离开INVISIBLE。它仍然存在VISIBLE。它调用setVisibility(View.VISIBLE),然后,当屏幕再次显示时,它看起来像这样:

在此处输入图像描述

如果我单击该按钮,它会恢复其原始背景尺寸。

到目前为止我做了什么
我已经将代码调试到android源。
第一 onDraw();我只打电话给那里super.onDraw();,它似乎只处理文本而不是背景,如果是这样,它工作正常,因为文本仍然像以前一样定位和标注。
第二 onMeasure();我也只在这里打电话super.onMeasure();;首次显示前调用数 (11) 次,之后调用 5 次setVisibility();单击按钮时根本不会调用它。
第三 onTouchEvent(),当我点击按钮时调用。它设置不同的颜色背景ACTION_DOWN并恢复原始颜色背景ACTION_UP

这些是按钮的日志:

如果认为相关,将按需发布更多详细信息。

0 投票
4 回答
5099 浏览

android - 带有适配器回收单元的android gridview标头解决方案

我已经看到了许多关于如何实现与网格的其余部分一起滚动的 gridview 标题的解决方案。

它们中的大多数包括在滚动视图中创建一个带有标题视图和网格视图的列表布局或相对布局。此解决方案存在滚动视图不知道网格大小的问题,因此要克服您需要像这里一样扩展网格视图:https ://stackoverflow.com/a/4536955/751180

但问题是,这样做会迫使 gridview 一次渲染所有项目而不回收其单元格。这可能会导致应用程序由于大量内存使用而崩溃,特别是如果视图包含图像。

其他人正在使用 Listviews 并根据屏幕大小计算可以放置多少列。我个人想继续使用网格视图。

有没有人使用不同的方法实现过 gridview 标头?

0 投票
1 回答
1660 浏览

android - 在 ActionBar 上滑动画运行时调整视图大小

我在活动中有一个 ImageView,当用户单击它时,我会为视图高度设置动画,使其变为全屏(其他视图只是隐藏在屏幕底部下方)。

但是,一旦动画完成,我会隐藏操作栏(使用getSupportActionBar().hide()),因此我需要将 ImageView 的大小再次调整大一点以再次进入全屏状态。
在父视图中,我尝试覆盖两者onMeasureonLayout在操作栏滑出屏幕时获取可用尺寸,但它不起作用,我只在操作栏动画结束时获得新尺寸 + 当我设置视图的高度时并请求布局它不会再次布局(所以我仍然可以在屏幕底部看到其他视图)。

0 投票
1 回答
2594 浏览

android - 动态调整相对布局

我正在尝试创建看起来像这样的东西。

我可以让标题正常工作,右边的词云看起来很像。我从片段中调用它。

但我正在努力让两列的东西正常工作。

我试图像这样获得父级的宽度:

这返回 0,而 parentLayout 有 layout_width="match_parent"

我似乎找不到关于这种“视图”的教程/示例,或者我用于搜索的关键字可能是错误的。

任何输入表示赞赏!提前致谢!!

ps 我也尝试使用 onMeasure(),但出现错误“必须覆盖或实现超类型方法”

页

0 投票
1 回答
158 浏览

android - onMeasure() 默认代码在哪里?

我了解您可以覆盖该onMeasure()方法以进行自定义测量,并且在您调用该方法onMeasure()时调用该view.measure()方法

如果我view.measure如下所示调用,即使我不覆盖onMeasure 方法,它仍然可以工作吗?这意味着存在该方法的默认版本,onMeasure它位于哪里?

我不完全知道在View对象上调用 measure 方法时发生了什么,文档对此并没有太多说明。如果我没有覆盖该onMeasure()方法,我必须查看已定义onMeasure()方法的代码以找出它在做什么。可怕的部分是调用措施,不知道引擎盖下发生了什么。

我想看,找不到代码

0 投票
1 回答
1641 浏览

android - onMeasure from View 在我的活动中产生 0

应用程序运行。它应该做的是在文本框中显示“=Heightofthescreen=”,其中Heightofthescreen是屏幕的实际值。然而,它只是给了我一个 0。我想这与我的上下文有关,但我不知道如何解决它。

活动类:

这是视图类:

0 投票
1 回答
1604 浏览

android - 自定义布局只是为了覆盖 onMeasure()

我想使用扩展 LinearLayout 类并覆盖 onMeasure() 方法的自定义布局,如下所示:

我的自定义布局:

问题是它根本不显示子布局,那么我该如何完成这项工作?谢谢!

(对不起,我的英语不好)

编辑:我用过这个类https://github.com/jesperborgstrup/buzzingandroid/blob/master/src/com/buzzingandroid/ui/ViewAspectRatioMeasurer.java

0 投票
1 回答
8775 浏览

android - 当父级设置为 WRAP_CONTENT 时,ViewGroup 子级高度测量为 0

我正在创建一个自定义 ViewGroup。如果我将自定义 ViewGroup 添加到布局而不指定 LayoutParams(如下所示),它将正确显示:

如果我指定 LayoutParams 并将宽度设置为 MATCH_PARENT 并将高度设置为 WRAP_CONTENT(如下所示),它不会显示:

我已经为这两种情况运行了调试。

场景 1
如果我没有指定任何 LayoutParams,子视图测量正确,并且当该方法遍历所有子视图以确定最大高度时,child.getMeasuredHeight()每次都返回正确的值。

场景 2
如果我将 LayoutParams 的宽度指定为 MATCH_PARENT,将高度指定为 WRAP_CONTENT,系统将执行两次通过 onMeasure 的操作,如下所述。

Pass 1
widthSpecMode = EXACTLY
width = widthSpecSize = 758 这是父RelativeLayout的宽度
heightSpecMode = EXACTLY
height = heightSpecSize = 1055 这是父RelativeLayout的高度

通过 2
widthSpecMode = EXACTLY
width = widthSpecSize = 758 也就是父级RelativeLayout的宽度
heightSpecMode = AT_MOST
方法然后遍历所有子视图确定最大高度,但child.getMeasuredHeight()每次都返回0。

子视图是几个 ImageButton 和一个 TextView。它们都有内容,并且该内容在第一个场景中正确显示。为什么它在第二种情况下显示为 0 高度,我该如何解决?

`' 我编写了一个简化的测试应用程序来重现问题。所有必要的代码如下所示。如果有人想尝试,您可以简单地剪切和粘贴。

MainActivity.java

activity_main.xml

MyViewGroup.java