Android的ImageView不尊重maxWidth?
所以,我有一个imageview应该显示任意图像,从互联网下载的个人资料图片。 我希望这ImageView缩放其图像以适应父容器的高度,并设置60dip的最大宽度。 但是,如果图像比例较高,并且不需要完整的60dip宽度,则ImageView的宽度应该减小,以便视图的背景可以贴合图像。
我试过这个,
<ImageView android:id="@+id/menu_profile_picture"
android:layout_width="wrap_content"
android:maxWidth="60dip"
android:layout_height="fill_parent"
android:layout_marginLeft="2dip"
android:padding="4dip"
android:scaleType="centerInside"
android:background="@drawable/menubar_button"
android:layout_centerVertical="true"/>
但是由于某种原因,ImageView超大,也许它使用了图像的内部宽度和wrap_content来设置它 - 无论如何,它不尊重我的maxWidth属性。它只适用于某些类型的容器吗? 它在LinearLayout中...
有什么建议么?
啊,
android:adjustViewBounds="true"
是maxWidth工作所必需的。
现在工作!
如果使用match_parent
,则设置adjustViewBounds
无效,但解决方法很简单自定义ImageView
:
public class LimitedWidthImageView extends ImageView {
public LimitedWidthImageView(Context context) {
super(context);
}
public LimitedWidthImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LimitedWidthImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int specWidth = MeasureSpec.getSize(widthMeasureSpec);
int maxWidth = getMaxWidth();
if (specWidth > maxWidth) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec(maxWidth,
MeasureSpec.getMode(widthMeasureSpec));
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
链接地址: http://www.djcxy.com/p/84705.html