Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SDK中getWidth/Height()和getMeasuredWidth/Height()之间的区别是什么?_Android_Android Layout_View_Size_Dimensions - Fatal编程技术网

Android SDK中getWidth/Height()和getMeasuredWidth/Height()之间的区别是什么?

Android SDK中getWidth/Height()和getMeasuredWidth/Height()之间的区别是什么?,android,android-layout,view,size,dimensions,Android,Android Layout,View,Size,Dimensions,结果表明,视图有两种尺寸:测量尺寸和工程图尺寸。测量尺寸是在测量过程(方法)中计算的尺寸,而图纸尺寸是屏幕上的实际尺寸。文件特别指出: 这些值可能(但不一定)不同于测量的宽度和高度 所以,我的问题是:是什么使图纸尺寸与测量尺寸不同?如果方法符合布局要求(作为参数widthMeasureSpec和heightMeasureSpec给出),SDK如何决定视图应具有不同的图形尺寸 此外,如何/在何处使用测量的宽度/高度来计算图纸的宽度/高度?我试图查看,但我不知道如何使用测量的宽度/高度来计算最终的宽

结果表明,视图有两种尺寸:测量尺寸和工程图尺寸。测量尺寸是在测量过程(方法)中计算的尺寸,而图纸尺寸是屏幕上的实际尺寸。文件特别指出:

这些值可能(但不一定)不同于测量的宽度和高度

所以,我的问题是:是什么使图纸尺寸与测量尺寸不同?如果方法符合布局要求(作为参数widthMeasureSpec和heightMeasureSpec给出),SDK如何决定视图应具有不同的图形尺寸


此外,如何/在何处使用测量的宽度/高度来计算图纸的宽度/高度?我试图查看,但我不知道如何使用测量的宽度/高度来计算最终的宽度/高度。可能与填充有关,但我不确定。

顾名思义,测量的宽度/高度是u在测量和布局阶段进行sed

我举个例子,

一个小部件被要求测量它自己,小部件说它想要200px乘以200px。这是测量的宽度/高度

在布局阶段,即在onLayout方法中。该方法可以使用其子级的measuredWidth/height,或者通过调用视图的布局方法来指定新的宽度/高度

假设onLayout方法调用childview.layout(0,0150150),现在视图的宽度/高度与测量的宽度/高度不同

我建议不要使用测量宽度/高度外部仅限布局方法

总而言之

  • 测量->设置测量宽度/测量高度
  • onLayout->设置小部件的宽度/高度
  • 另外
    公共无效视图。布局(int l、int t、int r、int b)


    似乎是位置和大小分配发生的地方。

    我认为,如果在视图中添加了滚动,这些度量可能会有所不同。可能吧,但我开发了一个自定义视图组,这在我的代码中发生。在出现这种行为之前,我不会处理滚动。因此我认为应该有更多我确认,我也开发了一个自定义视图组来强制给定的纵横比:我强制测量宽度和高度(低于或等于建议值),但结果实际宽度和高度没有改变(不是测量值)。与滚动无关。我真的找不到强制使用真实宽度和高度的方法。也就是说,我们应该始终使用getWidth/getHeight来获取视图的“真实”维度,对吗?是的,但是如果您正在进行自己的布局,那么您应该使用measuredWidth而不是width。那么,在onMeasure()中设置维度的目的是什么?我的意思是,布局过程是最后一个过程,在此过程中,您可以设置视图的最终尺寸,可能与测量值无关dimensions@edoardotognoni它取决于布局(LinearLayout、RelativeLayout或您的自定义布局),为视图提供正确的大小和位置。好的,假设视图告诉“我想要这些尺寸”.而布局上写着“你将拥有这些尺寸”,对吗?