我有一个带有fitxy scaletype的imageview。 我需要得到它的drawable的真实维度,但是下面的代码我得到了fitxy模式的维度。
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() {
// Remove after the first run so it doesn't fire forever
iv.getViewTreeObserver().removeOnPreDrawListener(this);
finalHeight = iv.getMeasuredHeight();
finalWidth = iv.getMeasuredWidth();
tv.setText("Height: " + finalHeight + " Width: " + finalWidth);
return true;
}
});
如何使用fitxy scaletype获取imageview中可绘制的实际尺寸?
答案 0 :(得分:0)
使用两种方法中的任何一种来获得相应的高度和宽度
Drawable drawable = imageView.getDrawable();
// Approach 1
drawable.getIntrinsicHeight(); // drawable.getIntrinsicWidth(); //
//Approach 2
Rect rect = drawable.getbounds();
rect.height();
rect.width();
但确保在ImageView onDraw之后应用此代码,测量和布局传递以每次获得适当的宽度。