获得实际的视图高度

简单的问题,也许是令人沮丧的复杂但希望简单的答案? 获取其大小设置为FILL_PARENT的元素的实际高度的“最佳实践”是什么?     
已邀请:
绝对比看起来应该更复杂。与建议问题中的答案相比,我发现的一种更简单的方法是使用ViewTreeObserver。在onCreate()方法中,您可以使用以下代码:
TextView textView = (TextView)findViewById(R.id.my_textview);
ViewTreeObserver observer = textView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        //in here, place the code that requires you to know the dimensions.
        //this will be called as the layout is finished, prior to displaying.
    }
}
    
如果您需要对视图中的多个组件的维度执行任何操作,只需对上述答案进行额外修改。在布局完成时为每个视图调用布局侦听器。这是递归地直到根视图组件(即子元素生成布局事件,然后父元素生成其布局事件)。这意味着您可以简单地挂钩到根视图组件的布局事件,以便在任何视图的布局更改时得到通知。
ViewTreeObserver observer = this.findViewById(android.R.id.content).getViewTreeObserver();
现在您可以期望所有视图都在onGlobalLayout中设置宽度和高度值,因为它们都已执行了它们的布局。这显然比为每个需要公开其实际尺寸的视图创建许多侦听器更好(当然,除非您必须具有视图生成事件的范围,这通常是不必要的)。     

要回复问题请先登录注册