Found a solution by expanding SimpleDraweeView , it allows me to use wrap_content , and it works just fine! No matter how I prevent you from setting the size in setContentView , and the preview does not work, I would be glad if I could edit this answer to fix it.
Using
<com.gazman.WrapContentDraweeView android:id="@+id/myImage" android:layout_width="wrap_content" android:layout_height="wrap_content" fresco:placeholderImage="@mipmap/myImage"/>
Source
public class WrapContentDraweeView extends SimpleDraweeView { private int outWidth; private int outHeight; public WrapContentDraweeView(Context context, GenericDraweeHierarchy hierarchy) { super(context, hierarchy); } public WrapContentDraweeView(Context context) { super(context); } public WrapContentDraweeView(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs); } public WrapContentDraweeView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context, attrs); } public WrapContentDraweeView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(context, attrs); } private void init(Context context, AttributeSet attrs) { if (attrs == null) { return; } TypedArray gdhAttrs = context.obtainStyledAttributes( attrs, R.styleable.GenericDraweeView); try { int placeholderId = gdhAttrs.getResourceId( R.styleable.GenericDraweeView_placeholderImage, 0); if(placeholderId != 0){ if(isInEditMode()){ setImageResource(placeholderId); } else { loadSize(placeholderId, context.getResources()); } } } finally { gdhAttrs.recycle(); } } private void loadSize(int placeholderId, Resources resources) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(resources, placeholderId, options); outWidth = options.outWidth; outHeight = options.outHeight; } @Override public void setLayoutParams(ViewGroup.LayoutParams params) { params.width = outWidth; params.height = outHeight; super.setLayoutParams(params); } }
source share