maxWidth를 존중하지 않는 Android imageview?


113

그래서 저는 인터넷에서 다운로드 한 프로필 사진 인 임의의 이미지를 표시해야하는 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에 있습니다 ...

어떤 제안?

답변:


302

아,

android:adjustViewBounds="true"

maxWidth가 작동하려면이 필요합니다.

지금 작동합니다!


공유를 위해 thx, 올바른 답변으로 표시해 주시겠습니까!?
WarrenFaith 2010 년

1
덕분에 많은 .. :) 나를 위해 잘 작동
Nirav Dangi

7
프로그래밍 방식으로 : imageView.setAdjustViewBounds (true);
Cyril Jacquart

7
이 발견을 접하는 사람은 작동하지 않으므로 너비 / 높이가 match_parent로 설정되지 않았는지 확인하십시오.
Kevin Worth

그리고 여기서 나는 이러한 경계를 존중하기 위해 만들어진 것으로 추정되는 AOSP의 특별한 내부 ImageView를 훔쳐 왔습니다.
TheWanderer

4

adjustViewBounds을 사용하는 경우 설정 이 도움이되지 match_parent않지만 해결 방법은 간단한 사용자 정의입니다 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);
    }
}

1
adjustViewBounds는 나를 위해 match_parent 너비로 잘 작동하는 것 같습니다.
Cory Petosky 2015
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.