我有如下定义的布局
<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并更改图像视图的高度/宽度,重新定义图像的纵横比,如custom image view所述。但问题是,MeasureSpec.getSize(heightMeasureSpec)
返回的父高度不会返回左侧字段占用的确切高度(因为只有在返回所有子节点的onMeasure后才可用)。所以这种方法并没有把我带到任何地方。
我如何实现这种理想的行为?
答案 0 :(得分:1)
您应该将imageView与linearlayout中的textviews对齐。
<?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>
复制粘贴此代码并添加一些不同大小的图像和额外的文本视图。
答案 1 :(得分:0)
这需要使用代码完成。您需要在屏幕渲染后几毫秒调用这些大小的API。因此,如果您在100毫秒之后调用它,使用已渲染的任何视图的postDelayed方法,您将获得大小。
答案 2 :(得分:0)
试试这个
<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:padding_top = "10dp"
android:padding_bottom = "10dp"
android:padding_left = "10dp"
android:orientation="vertical" >
<ImageView
android:id="@+id/movieImageView"
android:layout_width="75dp"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:paddingBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:src="@drawable/blank_96_1382x" />
答案 3 :(得分:0)
试试这个......
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
>
<ImageView
android:id="@+id/ivOne"
android:src="@drawable/ic_launcher"
android:layout_width="90dp"
android:layout_height="90dp" // you can check by changing the values.
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:padding="5dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center|center_horizontal">
<EditText
android:id="@+id/etOne"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Text:"
android:textColorHint="#4584a1"
android:layout_margin="10dp"
android:textColor="#4584a1"
>
</EditText>
<EditText
android:id="@+id/etTwo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Text"
android:textColorHint="#4584a1"
android:layout_margin="10dp"
android:textColor="#4584a1"
>
</EditText>
</LinearLayout>
</LinearLayout>
我希望它会有所帮助。