3

我有一个如下定义的布局

<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>

它看起来像这样 在此处输入图像描述

我希望图像视图根据图像视图左侧的内容缩小。例如,如果缺少几个字段并且字段的高度总和小于图像高度,那么它应该缩小(如下所示)。

在此处输入图像描述

如果图像左侧字段的高度总和大于指定的图像高度,则应保留指定的高度,如下所示 在此处输入图像描述

我尝试扩展图像视图并更改图像视图的高度/宽度,从而满足图像的纵横比,如此处所述自定义图像视图。但问题是,返回的父高度MeasureSpec.getSize(heightMeasureSpec)不会返回左侧字段占用的确切高度(因为只有在返回所有子项的 onMeasure 后才可用)。所以这种方法并没有把我带到任何地方。

我怎样才能实现这种期望的行为?

4

4 回答 4

1

您应该将 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>

复制粘贴此代码并添加一些不同大小的图像和额外的文本视图。

于 2013-05-14T10:21:55.370 回答
0

这需要使用代码来完成。您需要在屏幕呈现几毫秒后调用这些大小的 API。因此,如果您在 100 毫秒后调用它,使用已呈现的任何视图的 postDelayed 方法,您将获得大小。

于 2013-05-14T10:26:46.657 回答
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" /> 
于 2013-05-14T10:27:05.763 回答
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> 

我希望它会有所帮助。

于 2013-05-14T10:30:48.523 回答