其他分享
首页 > 其他分享> > android-在Picasso.load()之后在recyclerview中更改ImageView的大小?

android-在Picasso.load()之后在recyclerview中更改ImageView的大小?

作者:互联网

我有:

>使用GridLayoutManager的recyclerview
>包含ImageView的网格项目布局(高度wrap_content和宽度match_parent)包装在Framelayout中,因此图像在水平方向上对齐| bottom | center_horizo​​ntal
>毕加索从网络上将图像异步加载到ImageView中

现在的情况:
图像已加载到imageView中,但是imageview的大小是回收的网格项目的imageview的大小.

我想实现的目标:
将图像加载到imageview后,在运行时调整imageview的大小(重新绘制).

我试过的

> notifyItemChanged()-可以做到(至少在理论上),但是我
无法检查当前网格项目的视图是否在布局中
状态,因此我的应用因IllegalStateException崩溃了
>使用回调监听毕加索的负载,然后onSuccess()检查imageview可绘制的长宽比,并尝试使用
requestLayout().不工作. (很好,但只有在
是动画或触发布局重新绘制的内容.如果
一无所有,则不会重新绘制imageview.)
>通过回调监听毕加索的负载,然后onSuccess()启动动画以使imageview的alpha动画化.这将触发重画.但这有时有时是行不通的(我不知道为什么).

解决方法:

我所做的是将ImageView放入FrameLayout,然后将此FrameLayout的大小更改为所需的大小.希望对您有帮助.

<FrameLayout
        android:id="@+id/frame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true">

        <ImageView
            android:id="@+id/video_thumbnail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitStart"
            android:adjustViewBounds="true" />

</FrameLayout>

附言更改FrameLayout的大小:

viewHolder.frame.setMinimumWidth(neededWidth);

标签:android-recyclerview,gridlayoutmanager,picasso,imageview,android
来源: https://codeday.me/bug/20191028/1952546.html