我有一个recyclerview项目,其根目录包含一个cardview。在cardview内部,我有一个高度设置为wrap_content的布局,一切正常,但我想做的是有一个图像,当它的可见性设置为可见时将填充cardview。因为图像比卡片视图大很多,所以它会推动卡片视图的高度降低。图像宽度设置为fill_parent,高度设置为wrap_content。
<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:app="http://schemas.android.com/tools"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<FrameLayout
android:id="@+id/main_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- main container -->
<LinearLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<!-- omitted content -->
</LinearLayout>
<!-- overlay image -->
<ImageView
android:id="@+id/completed_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/completed_stamp"
android:scaleType="centerCrop"
android:cropToPadding="true"
android:adjustViewBounds="true"
android:visibility="gone"/>
</FrameLayout>
</android.support.v7.widget.CardView>
我基本上希望叠加图像被主要布局剪裁,我不知道如何去做。
图像为800 x 800,ImageView设置为centerCrop。
我目前尝试过:
FrameLayout.LayoutParams layoutParams = mainContainer.getLayoutParams();
imageView.setLayoutParams(layoutParams);
imageView.requestLayout();
onBindViewHolder 中的
修改
在onBindViewHolder中使用此代码:
holder.ImageView.getLayoutParams().height = holder.CardView.getHeight();
这样可行,但它的作用是将resize应用于在recyclerview列表中需要它的下一次出现,因此它不是真正的解决方案
答案 0 :(得分:0)
之前我遇到过类似的问题,您可能想尝试在图片视图中将cropToPadding属性设置为true。这可能会或可能不会削减一些图像,但如果它像个人资料照片这样的东西很好,因为它会根据设备/屏幕尺寸/密度进行缩放。