如何获得LinearLayout的高度

时间:2012-08-15 05:24:17

标签: android android-linearlayout

我的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 我能怎么做?

4 个答案:

答案 0 :(得分:38)

首先:您的LinearLayout ID为left_layout,而不是list_layout

此外,ll_list.getHeight()如果尚未绘制,则会返回0(以及ll_list.getWidth())。

解决方案是在你的视图布局后获得高度:

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

确保ll_listfinal

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你需要等待View初始化首先使用View Tree Observer它等待创建视图看看这个

get layout height and width at run time android

答案 3 :(得分:-6)

试试这段代码:

public static int getViewDimensions(View v,String what){
    int result = 0;
    if (what.equalsIgnoreCase("height")) {
        result = v.getHeight();
    } else {
        result = v.getWidth();
    }
    return result;

}

然后onBackPressed()您可以获得所需的任何ViewLinear的宽度和高度。

@Override
public void onBackPressed() {

    RelativeLayout banner = (RelativeLayout)findViewById(R.id.banner);

    int h = getViewDimensions(banner, "height");
    int w = getViewDimensions(banner, "width");

    Log.v("Height*Widht", h +"*"+ w);

}