FrescoのSimpleDraweeViewはwrap_contentをサポートしていない

2019/11/02に公開

Fresco の SimpleDraweeView は wrap_content をサポートしていません。

SimpleDraweeView does not support wrap_content for layout_width or layout_height attributes.

Using SimpleDraweeView | Fresco

Fresco チームの方が SO にこうしたらできるよって書いてたので備忘のためにメモしておきます。

void updateViewSize(@Nullable ImageInfo imageInfo) {
  if (imageInfo != null) {
    draweeView.getLayoutParams().width = imageInfo.getWidth();
    draweeView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
    draweeView.setAspectRatio((float) imageInfo.getWidth() / imageInfo.getHeight());
  }
}

ControllerListener listener = new BaseControllerListener {
    @Override
    public void onIntermediateImageSet(String id, @Nullable ImageInfo imageInfo) {
      updateViewSize(imageInfo);
    }

    @Override
    public void onFinalImageSet(String id, @Nullable ImageInfo imageInfo, @Nullable Animatable animatable) {
      updateViewSize(imageInfo);
    }
  };

DraweeController controller = draweeControllerBuilder
  .setUri(uri)
  .setControllerListener(listener)
  .build();
draweeView.setController(controller);

Discussion