我试图找到一种方法来测量使用Glide或Picasso(或其他任何东西)将图像加载到其中后SELECT r.* , b.* ,
b.number_of_seat - (SELECT sum(number_of_seat) FROM booking GROUP BY booking.bus_routine_id)
- (SELECT sum(number_of_reserved_seat) FROM reserved_seats GROUP BY reserved_seats.routine_id) AS available_seat
FROM bus_routines AS r
INNER JOIN buses AS b
ON b.id = r.bus_id
WHERE
r.sector_from = "KTM" AND
r.sector_to = "PKR" AND
r.departure_date = "2015-12-15"
HAVING available_seat > 0
。基本上,我试图在某些位置在图像顶部布局其他视图,但需要最终的ImageViews尺寸才能准确地完成。
我不确定用于尝试这样做的最佳布局是什么,但我目前正在使用它:
ImageView
并将图片加载到<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/viewingImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</FrameLayout>
。这些都在根FrameLayout内部,但我认为不重要。
这是我最近的尝试,但是如评论所述,在ImageView上使用viewingImageView
和.getWidth()
返回0.资源的宽度/高度返回原始图像的大小。
滑翔
.getHeight()
那么如何加载图像然后在加载图像后测量ImageView(或其包装FrameLayout)?或者如果可能的话,测量最终布局图像的尺寸会更好,因为我知道图像并不总是根据比例类型填充整个ImageView。我对任何解决方案持开放态度,以上只是我迄今为止所尝试的内容。
答案 0 :(得分:5)
您应该等待绘制视图,您可以像这样使用OnGlobalLayoutListener
ViewTreeObserver vto = mImageView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
this.mImageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
// Get the width and height
int width = mImageView.getMeasuredWidth();
int height = mImageView.getMeasuredHeight();
}
});
答案 1 :(得分:1)
使用图像视图创建自定义类。 在图像视图中使用此onMeasure我们可以获得高度和宽度
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mNeedsInitialScale) { // Set by setImage when a new image is set
// The measured width and height were set by super.onMeasure above
setInitialScale(getMeasuredWidth(), getMeasuredHeight());
mNeedsInitialScale = false;
}
}