web-dev-qa-db-ja.com

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を返します。
どのようにできるのか?

13
brian

まず第一に、あなたの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であることを確認してください。

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

ビューが初期化されるのを待つ必要があります。最初にビューツリーオブザーバーを使用します。ビューが作成されるまで待機します。

実行時Androidでレイアウトの高さと幅を取得

0
user2268821