Innomotion Media
Innomotion Media

Reputation: 53

Android, XML: Show only portion of image in layout container without altering aspect ratio

I want to set a background to any layout. Usually, I would go on about this like here:

<LinearLayout
    android:orientation="vertical"
    android:background="#@drawale/somedrawable"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="100dp"/>

But this will always make the background fit the LinearLayout. But what if the layout was smaller in height than the image I set as background? I do NOT want to destroy the image's aspect ratio but just center the image inside the layout and have the height overlap so that it isn't visible anymore.

To clarify:

Left is what happens currently, but right is how I want to to be. Since the layout container is smaller than the imageview or background image is, it is supposed to stay centered but only show what fits without altering the aspect ratio.

Upvotes: 1

Views: 319

Answers (2)

Abu-Bakr
Abu-Bakr

Reputation: 441

Use an ImageView inside the linear layout with width and height match_parent and set the scaleType="centerCrop"

<ImageView
    android:src="@drawable/somedrawable"
    android:scaleType="centerCrop"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Upvotes: 2

Zahoor Saleem
Zahoor Saleem

Reputation: 634

you cannot apply the scaletype property in linearlayout its better to use imageview to achieve this following is the link how to use scaleType attribue, to avoid the stratching behaviour use the 9 patch image, follwoing is the link to convert your image into 9patch

Upvotes: 0

Related Questions