gpt4 book ai didi

android - Facebook Fresco 使用 wrap_content

转载 作者:IT老高 更新时间:2023-10-28 23:37:25 31 4
gpt4 key购买 nike

我有一堆要使用 fresco 加载的可绘制对象,我想为这些图像使用 wrap_content 大小,如何在带有 fresco 的 xml 中做到这一点?或者如果 xml 是不可能的,你如何在代码中做到这一点?

<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/myImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fresco:placeholderImage="@mipmap/myImage"/>

除非我设置了固定大小,否则上述代码不起作用。

最佳答案

我是 Fresco 团队的一员,我是做出不支持 wrap-content 的设计决定的人。 documentation 中解释了基本原理。 .但简而言之,问题在于您不能保证图像将立即可用(您可能需要先获取它),这意味着一旦图像到达, View 大小就必须改变。这在大多数情况下是不可取的,您可能应该重新考虑您的 UI。

无论如何,如果你真的需要/想要这样做,你可以这样做:

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);

我从头到尾写了这段代码,我还没有实际测试过。但是这个想法应该是明确的,并且应该进行细微的调整。

关于android - Facebook Fresco 使用 wrap_content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33955510/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com