我需要在活动启动期间检索布局xml文件中定义的ScrollView的高度。这是实现这一点的最佳实践。我试过把代码放在onCreate()onStart()onResume()中。在启动时,所有的高度都为0。
有没有像onFinishInflate()这样的方法来治疗活动性疾病?
这是我的代码:

myScroll=(ScrollView) findViewById(R.id.ScrollView01);
int height=myScroll.getHeight();

最佳答案

你可以这样做:
获取对ScrollView的最终引用(在onGlobalLayout()方法中进行访问)。接下来,从ScrollView中获取ViewTreeObserver,并添加一个OnGlobalLayoutListener,覆盖OnGlobalLayout并获取此Listener中的度量值。

final ScrollView myScroll = (ScrollView)findViewById(R.id.my_scroll);
ViewTreeObserver vto = myScroll.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    @Override
    public void onGlobalLayout() {
        LayerDrawable ld = (LayerDrawable)myScroll.getBackground();
        height = myScroll.getHeight();
        width=myScroll.getHeight();
        ViewTreeObserver obs = myScroll.getViewTreeObserver();
        obs.removeOnGlobalLayoutListener(this);
    }

});

请参阅此线程中的更多内容:
How to retrieve the dimensions of a view?

07-27 21:48