17

私のコードではImage View、XMLレイアウトにがあり、コード内でこれのソース画像を変更し続けています。ここで、生成された画像の幅と高さを毎回知りたいと思います。

getWidth()、、getHeight(), getMeasuredWidth(),を 使用してみgetMeasuredHeight()ましたが、すべて0を返します。

どうすればこれを入手できますか?

4

7 に答える 7

43

どこで呼び出しgetWidth()getHeight()、ImageView を使用していますか? 活動中から呼び出してonCreate()も機能しません。アクティビティ ウィンドウがアタッチされるのを待ってからgetWidth() and getHeight()、ImageView を呼び出す必要があります。getWidth() and getHeight()アクティビティのメソッドから呼び出しを試すことができonWindowFocusChanged()ます。

@Override
public void onWindowFocusChanged(boolean hasFocus){
    int width=imageView.getWidth();
    int height=imageView.getHeight();
}
于 2012-05-02T10:47:46.923 に答える
14

これを試して

 ImageView iv=(ImageView)findViewById(R.id.image);
 ViewTreeObserver vto = iv.getViewTreeObserver();
    vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        public boolean onPreDraw() {
           finalHeight = iv.getMeasuredHeight();
           finalWidth = iv.getMeasuredWidth();
           Log.e("hilength","Height: " + finalHeight + " Width: " + finalWidth);
            return true;
        }
    });
于 2012-05-02T10:37:49.353 に答える
5

ImageView をドローアブルに設定し、ImageView の高さと幅のタイプが WRAP_CONTENT の場合、これによって ImageView の高さと幅を取得できます。onCreate()

int height = imageView.getDrawable().getIntrinsicHeight();
int width = imageView.getDrawable().getIntrinsicWidth();
于 2016-08-17T08:04:28.500 に答える
1

まず、イメージを mutablebitmap に変換し、イメージの幅と高さを取得しようとする必要があります。ほとんどの場合、これで問題が解決します。

    Bitmap Rbitmap = Bitmap.createBitmap(bitmap).copy(
                    Config.ARGB_4444, true);

Rbitmap.getWidth();
Rbitmap.getheight();
于 2012-05-02T10:40:23.303 に答える
1

画像オブジェクトを参照する方法が間違っています。そのため、常にゼロが与えられます。最初に imageview からビットマップ オブジェクトを作成し、そこから幅と高さを取得します。

カムから画像を撮ったとき、私は次のことを行い、それは魅力のように機能します。

Bitmap image2 = (Bitmap) data1.getExtras().get("data");
double width = Double.valueOf(image2.getWidth());
Log.v("WIDTH", String.valueOf(width));
double height = Double.valueOf(image2.getHeight());
Log.v("height", String.valueOf(height));

お役に立てば幸いです。

于 2012-05-02T10:37:41.827 に答える