Reputation: 4222
I have an ImageView that I want to display matching the full width of the device, I realized that like this:
<ImageView
android:id="@+id/home_bar_newvault"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:scaleType="centerCrop"
android:layout_alignParentBottom="true"
android:src="@drawable/home_bar" />
The home_bar is a PNG image file with the following dimensions: 2399x254. When I choose to view the Graphical Layout of the UI it displays the imageview correctly at the bottom of the activity. However, when I start the application on my device it won't display the Imageview at all.
Upvotes: 51
Views: 79007
Reputation: 1530
Convert your image to VECTOR
How do I convert pngs directly to android vector drawables?
Sometimes based on your project config... standard images were not shown in imageview and no one of above answers was worked in these situations.
But if you convert your image to android-vector(xml) then it will be shown simply in all of configuration or property-set-types (tools, background, src...)
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_launcher_background"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="75dp"
android:id="@+id/logoImageView"
android:scaleType="fitXY"
android:scaleX="1.5"
android:scaleY="1.5"
tools:ignore="MissingConstraints" />
in this sample the @drawable/ic_launcher_background is a vector :
Upvotes: 0
Reputation: 43
I have the same problem, the image was fine in the layout editor but become blured when I start the app. My solution is very simple, when copy paste the image to the project choose drawable-xxhdpi for the destination directory to make the image size smaller.
Upvotes: 0
Reputation: 370
(The following answer is based on the latest development (2021) of the Android Studio)
You shall use androidx.appcompat.widget.AppCompatImageView
and app:srcCompat
to maximize the compatibility.
The implementation shall have be included when you create your new default project as this is somehow similar to the ConstraintLayout case.
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/home_bar_newvault"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:scaleType="centerCrop"
android:layout_alignParentBottom="true"
app:srcCompat="@drawable/home_bar" />
Upvotes: 0
Reputation: 55
For my case, I change the scale type of the image
android:scaleType="fitXY"
Upvotes: 0
Reputation: 301
For me, the problem was that I was using
tools:src=...
rather than
android:src=...
It got auto-generated trying to use an already existing template image.
Upvotes: 30
Reputation: 121
I had the same issue and was able to solve it using following.
My problem was that the direction of the drawable archive was wrote in the second scrCompact
box.
I copy-pasted in the up box and the issue solved.
Upvotes: 12
Reputation: 2216
None of the above did the trick, it was a really big image, found this solution: In your manifest file
<application
//this solve it for me.
android:hardwareAccelerated="false"
// Add this if the previuos line didn't solve tge problem
android:largeHeap="true"
android:theme="@style/AppTheme">
Solve it for me.
Hope it helps someone.
Upvotes: 2
Reputation: 666
I had a problem with a samsung phone not displaying my drawable but it worked fine on another phone. The picture was not in any large dimensions or otherwise abnormal.
To solve this I simply put my picture asset into a drawable subfolder instead of having it in the main drawable folder. E.g from res/drawable to res/drawable-mdpi worked for me. If you have a picture to use for everything not having a specific dpi, put it into res/drawable-nodpi. Here's a bit more about the dpi folders.
Upvotes: 1
Reputation: 7023
you can use:
android:background="@drawable/home_bar"
instead of:
android:src="@drawable/home_bar"
Upvotes: 17
Reputation: 5431
I had the same issue, it is only showing in Design tab for Android Studio 2.2.
What I did to make it work is to change the automatic key assigned (populated via Drag/Drop ImageView) from app:srcCompat="@drawable/logo"
to android:src="@drawable/logo"
in Text tab to make it appear on both the emulator and the device e.g
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="75dp"
android:id="@+id/logoImageView"
android:scaleType="fitXY"
android:scaleX="1.5"
android:scaleY="1.5" />
Upvotes: 106
Reputation: 4222
Alright I've tried changing the resolution of the image (cutting it in half making it 1000x130), and somehow that fixed the problem. I think Android can't render large images like that directly? I don't know, if you know more about the subject please don't hesitate to reply! Anyway, scaling down the image worked.
Upvotes: 24