我遵循了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);

10-08 15:17