4

配置のためにビューサイズの計算を行うことは眉をひそめていることを私は知っています。Android レイアウト マネージャーは、すべてのビューを適切に配置する必要があります。ただし、ヒントを提供するために何らかの計算を行う必要がある正当なケースがいくつかあります (例: GridView の列数や、1 行に表示される最小文字数を許可するテキスト ビューのサイズ変更)。これらの場合、関連するビューの幅/高さの情報またはフォントの幅/高さなどを取得したいと思います。ただし、getWidth()/getHeigth()/etc 呼び出しは、ビューがディスプレイにレンダリングされていない限り、有効な値を返しませんが、その後遅くなります。キャッチ22の状況です。上記で説明したことを可能にする、私が見つけていない方法があるのだろうか(Android APIは私の心の中ですべてを理解するのに大きいです)。

4

2 に答える 2

7

ビューのサイズは、その親が計算されるまで計算できませんが、呼び出すことmeasure(allowedWidth, allowedHeight)でいつでもこの計算を強制できます。その後、getMeasuredWidth()動作します。

http://developer.android.com/reference/android/view/View.html#measure(int、int)を参照してください

于 2011-03-21T09:49:41.063 に答える
5

うん、私は提案をテストしました、そしてそれはうまくいきます!

サンプルコード。

Display display = getWindowManager().getDefaultDisplay();
View s = findViewById(R.id.Screen); // Screen is a container layout
s.measure(display.getWidth(), display.getHeight());
View c = findViewById(R.id.Cell0);
Log.i(TAG, "cell width = " + String.valueOf(c.getMeasuredWidth())
  +  " height = " + String.valueOf(c.getMeasuredHeight()));

私が理解していないのは、私がこれをどのように逃したかです!:)私は測定プロセスについてすべて知っていましたが、カスタムビューでの使用に固執していました...

于 2011-03-21T21:13:22.183 に答える