android.widget.ImageView の幅と高さを取得するにはどうすればいいですか? 質問する

android.widget.ImageView の幅と高さを取得するにはどうすればいいですか? 質問する
╔══════════════════════════════════════════════╗   ^
║ ImageView    ╔══════════════╗                ║   |
║              ║              ║                ║   |
║              ║ Actual image ║                ║   |
║              ║              ║                ║   |60px height of ImageView
║              ║              ║                ║   |
║              ║              ║                ║   |
║              ╚══════════════╝                ║   |
╚══════════════════════════════════════════════╝   
<------------------------------------------------>
                   90px width of ImageView

デフォルトの高さと幅を持つ画像ビューがあり、画像はデータベースに保存されており、Imageview の高さと幅に応じて画像を拡大縮小したいと考えています。高さと幅を変更するたびにコードでも変更する必要があるため、デフォルト値は設定したくないのです。

ImageView の高さと幅を取得しようとしていますが、どちらの場合も 0 が返されます。

int height = ((ImageView) v.findViewById(R.id.img_ItemView)).getHeight();

デフォルトの高さと幅があっても0が返されます

ベストアンサー1

この質問に対する私の答えが役に立つかもしれません:

int finalHeight, finalWidth;
final ImageView iv = (ImageView)findViewById(R.id.scaled_image);
final TextView tv = (TextView)findViewById(R.id.size_label);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    public boolean onPreDraw() {
        iv.getViewTreeObserver().removeOnPreDrawListener(this);
        finalHeight = iv.getMeasuredHeight();
        finalWidth = iv.getMeasuredWidth();
        tv.setText("Height: " + finalHeight + " Width: " + finalWidth);
        return true;
    }
});

その後、onPreDraw() メソッド内から画像のスケーリング作業を追加できます。

おすすめ記事