3 回答
TA贡献1831条经验 获得超4个赞
简而言之,视图尚未内置在onCreate(),onStart()或onResume()中。由于它们在技术上不存在(就ViewGroup而言),因此它们的尺寸为0。
总而言之,您可以在这里找到有关如何处理的更好说明。
如何检索视图的尺寸?
TA贡献1801条经验 获得超16个赞
它为0,因为在onCreate和onStart中,该视图实际上都尚未绘制。您可以通过侦听实际绘制视图的时间来解决此问题:
final TextView tv = (TextView)findViewById(R.id.venueLabel);
final ViewTreeObserver observer= tv.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
tv.getHeight()
observer.removeGlobalOnLayoutListener(this);
}
});
那里有删除监听器的调用,以防止重复调用布局更改中的自定义处理程序...如果要获取这些,则可以省略。
TA贡献1864条经验 获得超2个赞
使用此功能获取视图的高度或宽度
private int getHeightOfView(View contentview) {
contentview.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
//contentview.getMeasuredWidth();
return contentview.getMeasuredHeight();
}
添加回答
举报