5

これは私の最初の投稿です。私はAndroidアプリ用にJavaでコーディングすることを学んでいます。定義済みのlayout_weight(将来いつでも変更したい)と高さと幅をMATCH_PARENTに設定したLinearLayout「変数名:ll」を使用しています。この LinearLayout の高さをピクセル単位で取得したい。これを Java (ll.addView(variableForAnObject);) を使用して入力します。ll.getLayoutParams().height; を使用して高さを取得しようとしています。しかし、私は-1を取得しています。これは MATCH_PARENT の定数だと思うからです。高さを 0dp に設定すると、ll が非表示になり、高さが 0 になります。

高さを出す方法があれば教えてください。DisplayMetrics を使用して画面の高さを取得し、(少なくとも私にとっては) ほぼ不可能な計算を行うことでこれを行うことができると思いますが、これは複雑すぎます。

4

4 に答える 4

10

試してみてll.getHeight()ください

そうでない場合は、Android がまだ境界を計算していないためです。

//inside of onCreate method should work
ll.post(new Runnable() {
    @Override
    public void run() {
        //maybe also works height = ll.getLayoutParams().height;

        height  = ll.getHeight();

    }
});
于 2014-04-28T12:25:01.280 に答える
3

寸法がまだ設定されていないため、-1 です。レイアウトを設定するたびに、高さ、幅などの実際の値を計算するのに時間がかかります。

OnLayoutListenerレイアウトが終了したときに聞くために使用します。

layout.onLayoutChange (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
    //Extract values here
    height = view.getHeight();
    width = view.getWidth()
}

OnLayoutListener の詳細については、これを参照してください

于 2014-04-28T12:28:15.630 に答える
0

レイアウト xml ファイルにidフィールドを指定します。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:id="@+id/<ID>>

この ID を使用して Java クラスで参照を取得し、高さと幅を見つけます。

LinearLayout linearLayout= (LinearLayout) findViewById (R.id.<ID>);
double height = linearLayout.getHeight();
double width = linearLayout.getWidth();
于 2014-04-28T12:26:10.893 に答える