如何在framelayout

时间:2015-04-29 05:17:05

标签: android android-layout android-appcompat

我有一个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列表中需要它的下一次出现,因此它不是真正的解决方案

1 个答案:

答案 0 :(得分:0)

之前我遇到过类似的问题,您可能想尝试在图片视图中将cropToPadding属性设置为true。这可能会或可能不会削减一些图像,但如果它像个人资料照片这样的东西很好,因为它会根据设备/屏幕尺寸/密度进行缩放。