【发布时间】:2016-09-09 11:57:27
【问题描述】:
我正在编写一段代码,允许用户从 Facebook 中选择一张他们的照片,并在我们的应用程序中将其用作个人资料图片。逻辑搞定了,但是布局让我有点头疼。
我的图片有这个布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_margin="5dp"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
/>
</android.support.v7.widget.CardView>
我正在使用 RecyclerView,它将专辑的每个图像加载到 2 列网格中(由 GridLayoutManager 提供)。这是使用毕加索完成的:
mImageLoader.load(image.getUrl()).resize(480, 480).centerCrop().into(holder.imageView);
因为加载包含数百张图片的相册需要一段时间,所以我想显示一个占位符。这可以使用 Picasso 中的 .placeholder 运算符来实现。
我的问题是我不知道我的 ViewHolders 的高度和宽度。
GridLayoutManager 将计算有多少可用空间并为每个项目分配一个宽度值,因此我分配的数量将适合,这就是为什么我不能为占位符使用预定义的可绘制对象的原因,因为我可以永远不要确定我的 240x240 drawable 是否适合所有设备。
所以,我的问题是:如何在我的 recyclerview 中获取每张卡片的宽度,以便我应用在运行时创建的位图作为占位符?
【问题讨论】:
标签: android android-recyclerview picasso gridlayoutmanager