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

このコードをコピーして貼り付け、異なるサイズの画像と追加のテキストビューを追加します。

于 2013-05-14T10:21:55.370 に答える
0

これは、コードを使用して行う必要があります。画面がレンダリングされてから数ミリ秒後に、これらのサイズの API を呼び出す必要があります。したがって、レンダリングされたビューの postDelayed メソッドを使用して 100 ミリ秒後に呼び出すと、サイズが取得されます。

于 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 に答える