为什么linearlayout的高度为零

时间:2011-05-31 11:52:39

标签: android android-linearlayout

我用linearlayout创建了layout:height="fill_parent"我设置了3个按钮和一个TextView。我能够看到所有。但是当我想获得linearlayout的高度时。我在onCreate方法中使用了以下代码。 I am getting linear layout height as zero.但我的线性布局高度是填充父级。而且我也能看到我添加的元素。为什么我没有得到线性布局的实际高度。

LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_linearlayout);
System.out.println("...Height..."+mainLayout.getMeasuredHeight());

由于 迪帕克

3 个答案:

答案 0 :(得分:2)

参考这个问题

Can't get height of Widgets

答案 1 :(得分:0)

当一个Activity获得焦点时,将要求它绘制其布局。 Android框架将处理绘制过程,但Activity必须提供其布局层次结构的根节点。 请参阅此链接view drawing layout padding and margis

答案 2 :(得分:0)

直到onCreate,OnResume,onStart视图尚未创建。 因此,如果您想获得视图的高度或宽度,请执行以下操作

       observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
        {
            @Override
            public void onGlobalLayout()
            {
                SearchResultActivity.this.sideIndexHeight = SearchResultActivity.this.sideIndex.getHeight();
                ViewTreeObserver obs = sideIndex.getViewTreeObserver();
                obs.removeGlobalOnLayoutListener(this);
            }
        });

请删除新的TreeObserver,否则会出现异常,TreeObserver不活着

覆盖onWindowFocusChanged方法,可以获得视图的高度或宽度。但是如果您的活动是作为子活动开始的,则不会调用onWindowFocusChanged方法。所以在那种情况下使用上面的那个。