我有一个帖子列表,其中大多数是图片(简单地说它是帖子,就像 G+ 或 FB 应用程序一样)。每个帖子条目都有一个图像纵横比,因此即使在从服务器加载图像之前,我也可以根据它的宽度设置图像高度,因此卡片布局不会在加载时改变。
问题是layout_width="match_parent"
针对卡片和帖子图像设置的。当我得到卡片视图的宽度时,它为零。所以我无法计算高度。
目前我看到的唯一解决方案是采用父容器(RecyclerView)的宽度并扣除所有填充,但这看起来不是一个好的解决方案。
还有其他方法吗?
这是适配器代码的示例
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
....
int width = holder.itemView.getWidth();
....
//do some calculations
}
布局(没有不相关的部分)
<?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"
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardBackgroundColor="#ffffff"
card_view:cardCornerRadius="3dp">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
android:id="@+id/includedPost"
layout="@layout/post_details" />
</RelativeLayout>
</android.support.v7.widget.CardView>
包含的帖子:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/postImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/commenterImage"
android:minHeight="120dp"
android:scaleType="centerCrop" />
</RelativeLayout>