我有一个如下定义的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="vertical" >
<ImageView
android:id="@+id/movieImageView"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_centerVertical="true"
android:paddingBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:src="@drawable/blank_96_1382x" />
<TextView
android:id="@+id/movieTypeView"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_below="@+id/movieImageView"
android:layout_alignLeft="@+id/movieImageView"
android:maxLines="1"
android:text="Tv Series"
android:textColor="@color/gray"
android:textSize="12sp"
android:gravity="center"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:visibility="gone"
android:textStyle="bold" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerVertical="true"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_toRightOf="@id/movieImageView"
android:layout_marginLeft="5dp">
<TextView
android:id="@+id/movieTitleView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="3"
android:text="Shutter Island starring leonardo di caprio"
android:textColor="@color/white"
android:textSize="17sp"
android:textStyle="bold"
android:typeface="sans" />
...
</RelativeLayout>
看起来像这样
我希望 ImageView 根据 ImageView 左侧的内容缩小。例如,如果缺少几个字段并且字段的高度总和小于图像高度,那么它应该缩小(如下所示)。
如果图像左侧字段的高度总和大于指定的图像高度,则应保持指定的高度,如下所示
我尝试扩展 imageview 并更改 ImageView 的高度/宽度,重新设置图像的纵横比,如此处所述custom image view .但问题是,MeasureSpec.getSize(heightMeasureSpec)
返回的父级高度不会返回左侧字段占用的确切高度(因为只有在所有子级的 onMeasure 返回后才可用)。所以这种方法并没有带我去任何地方。
我怎样才能实现这种期望的行为?
最佳答案
您应该将 imageView 与线性布局中的 TextView 对齐。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true" >
<LinearLayout
android:id="@+id/lnrTextViews"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#cee"
android:gravity="center"
android:maxLines="1"
android:paddingBottom="3dp"
android:paddingTop="3dp"
android:text="Tv Series"
android:textColor="#fff"
android:textSize="12sp"
android:textStyle="bold"
android:visibility="visible" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#f00"
android:gravity="center"
android:maxLines="1"
android:paddingBottom="3dp"
android:paddingTop="3dp"
android:text="Tv Series"
android:textColor="#fff"
android:textSize="12sp"
android:textStyle="bold"
android:visibility="visible" />
</LinearLayout>
<ImageView
android:id="@+id/movieImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/lnrTextViews"
android:layout_alignTop="@id/lnrTextViews"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:paddingBottom="5dp"
android:src="@drawable/songs" />
</RelativeLayout>
复制粘贴此代码并添加一些不同大小的图像和额外的 TextView 。
关于android - 根据父级高度调整 Imageview 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16540550/