问题是当你尝试 时getWidth
,你ImageView
没有出现在屏幕上,所以它总是返回 0。所以有两种方法,你可以得到宽度:
第一种方式
你需要measure
你的ImageView
,然后得到measuredWidth
:
holder.photoPost = (ImageView) convertView.findViewById(R.id.photoPost);
holder.photoPost.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int targetHeight = holder.photoPost.getMeasuredWidth() * (9/16);
第二种方式
添加onGlobalLayoutListener
到您的ImageView
然后,您将能够获得宽度:
holder.photoPost = (ImageView) convertView.findViewById(R.id.photoPost);
holder.photoPost.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
holder.photoPost.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
} else {
holder.photoPost.getViewTreeObserver()
.removeGlobalOnLayoutListener(this);
}
int targetHeight = holder.photoPost.getWidth() * (9/16)
}
});