3

いくつかのカスタム ビューを含む LinearLayout を含む Horizo​​ntalScrollView があります。今のところ、この行で子のサイズを修正します(子のコンストラクター内):

setLayoutParams(new LayoutParams(200, LayoutParams.FILL_PARENT));

私がやりたいのは、コンポーネントの幅を実際の 200px ではなく、それ自体の高さの 30% に設定することです。しかし、「FILL_PARENT」までの高さが必要です。

onMeasure メソッドをオーバーライドしたとき、次のことを試しました。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    System.out.println(widthMeasureSpec + "/" + heightMeasureSpec);
}

しかし、私は出力を得ました:

1073742024/1073742586

だから、私はここで多くのことを行うことができないように見えますが、まだ多くの情報を持っていません:)

トリックを行う方法はありますか?

私はシミュレーターでテストしていることを正確に述べています(それが問題かどうかはわかりません)。

4

1 に答える 1

0

画面の寸法を取得するようなことができます

DisplayMetrics display = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics( display );
int screenW = display.widthPixels;
int screenH = display.heightPixels;

0.3 を取得したいコンポーネントの高さが画面全体の高さである場合は、次のようにします。

setLayoutParams(new LayoutParams((int)(screenH*0.3), LayoutParams.FILL_PARENT));

私はあなたの質問を誤解したかもしれません、私は目が覚めたばかりです:)それがうまくいったかどうか、または何か他のものを探しているかどうか教えてください

于 2012-10-13T12:40:36.797 に答える