web-dev-qa-db-ja.com

Android:カスタムビューの高さと幅を取得する方法は?

可能性のある複製:
Android親の寸法に基づいてビューをサイズ設定する方法

getMeasuredWidth()およびgetMeasuredHeightを使用するにはどうすればよいですか?常に0を返します。これとgetHeight()getWidth()の違いは何ですか?

65

カスタムビューの高さと幅を取得するソリューションを取得しました。

@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
    super.onSizeChanged(xNew, yNew, xOld, yOld);

    viewWidth = xNew;
    viewHeight = yNew;
}

私の場合はうまくいきます。

61
Paresh Mayani

申し訳ありませんが、この質問はすでに尋ねられています。私はここで答えを見つけました- サイズの設定方法Android親の寸法に基づいたビュー

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
    this.setMeasuredDimension(parentWidth, parentHeight);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
54

それらをコンストラクター内で取得しようとしないでください。 onDraw()メソッドで呼び出してみてください。

13
Mozz

次の方法を使用して、ビューの幅と高さを取得できます。たとえば、

int height = yourView.getLayoutParams().height;
int width = yourView.getLayoutParams().width;

これにより、XMLレイアウトで指定されたビューの変換された値が得られます。

高さの指定値がXMLで53dpの場合、整数として変換された値を80として取得します。

12
Sam

私はgetMeasuredWidth()getMeasuredHeight()getHeight()getWidth()の周りにも長い間行方不明になりました..........後でonSizeChanged()メソッドが本当に役立つことがわかりました。

新しいブログ投稿:Android http://syedrakibalhasan.blogspot.com/2011/02/how-toでcustomViewの幅と高さの寸法を取得する方法(ビューを拡張する方法) -get-width-and-height-dimensions.html

9
Rakib

getHeight()getMeasuredHeight()の違いは、最初のメソッドがViewの実際の高さを返し、2番目のメソッドがViewの子のサマリーの高さを返すことです。 。つまり、getHeight()はビューの高さを返し、getMeasuredHeight()はこのビューがすべての要素を表示するのに必要な高さを返します

6
OFFmind

Getheightは高さを取得し、getwidthは幅を取得します。しかし、これらのメソッドをすぐに呼び出しています。 oncreateまたはonresumeで呼び出している場合、ビューはまだ描画されていません。ビューが描画された後に呼び出す必要があります。

1
Falmarri