Search code examples
androidimageviewscalemeasure

How to scale Android ImageView width according to layout_alignTop and layout_alignBottom


I'd like to have a simple player view with image, name and status. The image will be loaded via Google+.

The Problem I have is that with big images my ImageView get's far too wide and pushes my texts out of sight.

Here is an example to show how it looks like: https://dl.dropboxusercontent.com/u/11037539/unwanted_padding.png

Layout:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/playerPane"
    android:background="@color/player2">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/playerName"
        android:layout_alignBottom="@+id/playerStatus"
        android:id="@+id/playerImage"
        android:src="@drawable/ic_contact_picture"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/playerImage"
        android:id="@+id/playerName"
        android:text="Player"
        android:textColor="@android:color/black"
        android:singleLine="true"
        android:textStyle="bold"
        android:paddingTop="@dimen/player_padding"
        android:paddingBottom="@dimen/player_padding"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/playerName"
        android:layout_alignLeft="@+id/playerName"
        android:id="@+id/playerStatus"
        android:text="status"
        android:singleLine="true"
        android:paddingBottom="@dimen/player_padding" />
</RelativeLayout>

I've tried all ImageView.scaleTypes, but so far nothing works..

Thanks a lot for your help!


Solution

  • You just need to define your width. It should fix it. So change this line

    to something like:

       <ImageView
            android:layout_width="75dp" //OR WHATEVER LOOKS BEST