╔══════════════════════════════════════════════╗ ^
║ 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() メソッド内から画像のスケーリング作業を追加できます。