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

4

3 に答える 3

41

まず第一に:あなたのLinearLayoutIDは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

于 2012-08-15T05:46:13.237 に答える
1
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout);
                                                       ^^^^^^^^^^
于 2012-08-15T05:40:43.017 に答える
1

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

実行時にレイアウトの高さと幅を取得するandroid

于 2017-07-05T11:45:04.480 に答える