我遵循了this体面的教程,并且本地图像一切都很好。当尝试从本地图像更改为通过Fresco加载到SimpleDraweeView中的图像时,我似乎无法在其他图像之间调整视图的大小并使其错开。
我的布局看起来像这样(它是:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
card_view:cardUseCompatPadding="true"
card_view:cardCornerRadius="8dp"
android:layout_marginBottom="16dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/fresco_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
fresco:actualImageScaleType="fitXY"
/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="@string/hello_world"
android:textColor="#ffffff"
android:layout_below="@+id/fresco_image"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:gravity="center_horizontal"
android:layout_alignParentBottom="true"
android:background="#1976D2"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
上面被夸大为以下内容:
<android.support.v7.widget.RecyclerView
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/text"
android:scrollbars="vertical">
</android.support.v7.widget.RecyclerView>
在我的付款人上,我尝试过:
设置宽度或高度或两者都为“ match_parent”和“ wrap_content”的所有变体。 wrap_content设置似乎不是recommended
不同的宽高比,但这似乎会导致图像被裁剪并且大小/形状都统一(不交错)
scaleType与上面的不同组合。
在付款人之外,我一直在查看GitHub中的一些演示,但是我似乎找不到任何交错视图的示例。
我确信这只是将设置正确组合的问题,但是对于我这样的人,我无法弄清楚该组合是什么。
任何建议(或样品)将不胜感激!
更新
我们的后端实现返回每张图片的长宽比(以及宽度/高度)。我能够在SimpleDraweeView上设置长宽比,并且尊重这些值:
vDraweeView.setAspectRatio(fAspect);
如果我不必这样做,那会更酷,但是显然,在图像完全加载之前,视图不知道它的大小。虽然这可能是调整视图大小的好时机,但这可能会导致显示跳动……不理想!
听起来对吗?
最佳答案
由于SimpleDraweeView在下载之前不知道图像的大小(由于移动UI原因(也许是其他原因,不建议在初始绘制后调整大小),因此我必须在下载图像之前设置纵横比。假设您在下载图像之前已经知道了宽高比...我们在本例中就是这样做的。我在recyclerview适配器中做到了这一点。
设置纵横比的命令:
vDraweeView.setAspectRatio(fAspect);