Android:如何获得自定义视图';它的高度和宽度是多少?
可能重复:Android:如何获得自定义视图';它的高度和宽度是多少?,android,views,Android,Views,可能重复: 如何使用getMeasuredWidth()和getMeasuredHeight?它总是返回0。这与getHeight()和getWidth()之间有什么区别 WellgetHeight获取高度,getWidth获取宽度。但是你调用这些方法太快了 如果在onCreate或onResume中调用它们,则视图尚未绘制。您必须在绘制视图后调用它们。不要试图将它们放入其构造函数中。试着用onDraw()方法调用它们。我也在getMeasuredWidth()和getMeasuredHeig
如何使用
getMeasuredWidth()
和getMeasuredHeight
?它总是返回0。这与getHeight()
和getWidth()
之间有什么区别 WellgetHeight
获取高度,getWidth
获取宽度。但是你调用这些方法太快了
如果在
onCreate
或onResume
中调用它们,则视图尚未绘制。您必须在绘制视图后调用它们。不要试图将它们放入其构造函数中。试着用onDraw()
方法调用它们。我也在getMeasuredWidth()
和getMeasuredHeight()
getHeight()
和getWidth()。。。。。。。。。。后来我发现onSizeChanged()
方法非常有用
新博文:如何在Android中获取自定义视图(扩展视图)的宽度和高度维度刚刚得到一个获取自定义视图高度和宽度的解决方案:
@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
super.onSizeChanged(xNew, yNew, xOld, yOld);
viewWidth = xNew;
viewHeight = yNew;
}
它在我的情况下工作。您可以使用以下方法获得视图的宽度和高度,
比如说,
int height = yourView.getLayoutParams().height;
int width = yourView.getLayoutParams().width;
这将给出在XML布局中指定的视图的转换值
假设高度的指定值是XML格式的53dp,则转换后的整数值为80。与getMeasuredHeight()
之间的区别在于,第一个方法将返回视图的实际高度,第二个方法将返回视图的子视图的摘要高度。换句话说,getHeight()
返回视图高度,getMeasuredHeight()
返回此视图显示其所有元素所需的高度我在询问getMeasuredHeight()和getHeight()之间的差异。好的,那么如何获取屏幕宽度和高度?为什么不能使用Display Display=getWindowManager().getDefaultDisplay()代码>在视图中?不是重复的。问题中根本没有提到父维度!我相信这是确定宽度和高度的正确方法。这也是最简单的。一个问题是,当键盘出现时,它会被调用注意,只要指定了宽度或高度,它就会给出宽度/高度。如果设置“包裹内容”,则不会给出正确的宽度/高度。它将返回-1或0,这取决于它的“匹配父项”或“换行内容”。是的,它给我-1,而不是scrollview的实际高度,我需要一个scrollview高度,在我的情况下,我有scrollview和seekbar,需要同时更改它,也就是说,如果我同时通过scrollview滚动x数量,seekbar进度应与scrollview相同。在自定义视图的init中不起作用getLayoutParams在继承的视图类上为null此方法(getLayoutParams)返回null。onDraw不是连续调用的吗?事实上,我认为最好的做法是倾听onsizechanged事件,并将宽度和高度放在成员变量中。然后,您可以在ondraw方法中使用它们,而无需再次询问它们。不要在ondraw方法中执行任何繁重的操作。onDraw仅用于绘图它在任何情况下都可以相同?我得到的两个值是一样的,有可能吗?当然,可能是一样的。例如,如果您的子对象与其父对象具有相同的高度。