如何获取LinearLayout的高度

13

我有一个LinearLayout,高度设置为match_parent,如下所示:

<LinearLayout
    android:id="@+id/list_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
我想要获取这个LinearLayout的高度。
我使用了下面的代码:
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout);
int h = ll_list.getHeight();

但它返回了null。
我该怎么办?


除非您打算在屏幕上显示位图之前有一个后台任务来优化它们(或类似的操作),否则我真的无法想象任何时候需要这个值。如果您能告诉我们更多关于您的应用程序,我们可能能够指向更好的设计替代方案。 - Budius
请查看此链接:https://dev59.com/YGEh5IYBdhLWcg3w3muK#41705445,它可能会对您有所帮助。 - Siddhesh Shirodkar
3个回答

42

首先: 你的LinearLayout id 是 left_layout,不是 list_layout

此外,如果它还没有被绘制出来,ll_list.getHeight()(以及ll_list.getWidth())将返回0。

解决方案是在视图布局后获取高度:

ll_list.post(new Runnable(){
    public void run(){
         int height = ll_list.getHeight();
    }
});

确保你的ll_listfinal


@brian 这不是你的问题。只需确保在视图绘制后调用 getHeight() - Dmitry Zaytsev
@brian 我提供了一个例子 - Dmitry Zaytsev
有没有办法强制 Android 绘制布局。我需要在 onCreateView() 中获取布局高度。 - KasparTr

1
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout);
                                                       ^^^^^^^^^^

2
如果是这样,也许他在问题中打错了。如果那是情况的话,它甚至无法编译。 - Archie.bpgc
请查看您的XML文件名,并更改ID,然后进行检查。 - Samir Mangroliya

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接