mob*_*lex 38 layout android measurement
如果我在onResume中为布局调用getMeasuredWidth()或getWidth(),则返回0.我认为此时此视图尚未显示.
另外我认为我需要在绘制布局后调用的回调方法中放置getMeasuredWidth()或getWidth(),并且已知视图测量.我应该使用什么android回调方法?
Ado*_*ncz 78
您无法使用width/ height/ getMeasuredWidth/ getMeasuredHeight在View之前的系统使得它(通常为onCreate/ onResume).
对此的简单解决方案是Runnable将布局发布到布局.runnable将View在布局后执行.
BoxesLayout = (RelativeLayout) findViewById(R.id.BoxesLinearLayout);
BoxesLayout.post(new Runnable() {
@Override
public void run() {
int w = BoxesLayout.getMeasuredWidth();
int h = BoxesLayout.getMeasuredHeight();
...
}
});
Run Code Online (Sandbox Code Playgroud)
Jef*_*rod 37
这个答案说:
使用ViewTreeObserver上View等待第一个布局.只有在第一次布局后才能getWidth()/getHeight()/getMeasuredWidth()/getMeasuredHeight()工作.
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
viewWidth = mediaGallery.getWidth();
viewHeight = mediaGallery.getHeight();
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31722 次 |
| 最近记录: |