Как получить высоту 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.
Как я могу сделать?

Ответ 1

Прежде всего: ваш 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_list равен final.

Ответ 2

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

Ответ 4

попробуйте этот код:

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

}

then 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);

}