您好ImageView
包含Drawable
,我想知道此Drawable
(宽度和高度)的实际大小。我怎么能得到真正的尺寸?
我试过了,但它不起作用:
final ImageView img = (ImageView) findViewById(R.id.imagePlan);
img.setImageResource(R.drawable.gratuit);
System.out.println("w=="+img.getDrawable().getIntrinsicWidth()+" h=="+img.getDrawable().getIntrinsicHeight());
感谢
答案 0 :(得分:7)
首先,您必须将drawable转换为位图,然后才能获得图像的高度和宽度。
尝试以下代码: -
BitmapDrawable bd=(BitmapDrawable) this.getResources().getDrawable(imageID);
double imageHeight = bd.getBitmap().getHeight();
double imageWidth = bd.getBitmap().getWidth();
答案 1 :(得分:1)
通过将资源解码为位图,您可以获得真实的宽度和高度。
final ImageView img = (ImageView) findViewById(R.id.gratuit);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
img.setImageBitmap(bitmap);
答案 2 :(得分:1)
你的宽度和高度可能都是零,因为,你没有测量过抽屉,
img.post(new Runnable() {
@Override
public void run() {
System.out.println("w=="+img.getDrawable().getIntrinsicWidth()+" h=="+img.getDrawable().getIntrinsicHeight());
}
})
答案 3 :(得分:0)
BitmapFactory.Options options = new BitmapFactory.Options();
options.inTargetDensity = DisplayMetrics.DENSITY_DEFAULT;
Bitmap bmp = BitmapFactory.decodeResource(activity.getResources(), R.drawable.sample_image, o);
int w = bmp.getWidth();
int h = bmp.getHeight();
答案 4 :(得分:0)
对于VectorDrawable
您可以使用intrinsicHeight
和intrinsicWidth
因此,可接受的答案将是
val vd = this.resources.getDrawable(cardInput.card!!.brand.icon) as VectorDrawable
val imageHeight = vd.intrinsicHeight
val imageWidth = vd.intrinsicWidth