Giter Club home page Giter Club logo

Comments (9)

colinrtwhite avatar colinrtwhite commented on June 30, 2024 4

@fernandospr You can work around this by setting the scaleType to centerCrop or scale(Scale.FILL) on your request.

This occurs because wrap_content is evaluated to 1px whereas Glide and Picasso treat it as the height of the parent. I'm working on fixing this behaviour for 0.7.0.

from coil.

colinrtwhite avatar colinrtwhite commented on June 30, 2024 3

Good catch! I think this is because we force PixelSize's dimensions to be > 0. Relaxing that limitation to >= 0 should solve the issue, but might cause side-effects. Going to work on this later tonight.

from coil.

fernandospr avatar fernandospr commented on June 30, 2024 1

Hi @colinrtwhite, I'm using 0.6.1 and using wrap_content for both width and height doesn't work either. This was my first test of the library and I was surprised it didn't work out of the box, wondering what I did wrong, until I tried using fixed values for width/height.

I'm not sure if this is the expected behavior. If it is, then I suggest you to add a comment about this on the migration guide from libraries such as Glide or Picasso which do work using wrap_content out of the box and it's possible that ImageViews are using wrap_content.

Sample using Picasso, Glide, Coil

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        tools:srcCompat="@tools:sample/avatars" />

Picasso

Code

Picasso.with(this).load("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png").into(imageView)

Result

Picasso

Glide

Code

Glide.with(this).load("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png").into(imageView)

Result

Glide

Coil

Code

imageView.load("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png")

Result

Coil

from coil.

Stonos avatar Stonos commented on June 30, 2024

Unfortunately #29 does not seem to fully solve the issue. On the sample app the ImageView now has a 1:1 aspect ratio instead of the 2:1 the image being loaded has:

image

from coil.

colinrtwhite avatar colinrtwhite commented on June 30, 2024

@Stonos This is because the ImageView is set to scaleType="fitCenter", which will "fit" the image to the smallest dimension, which in this case is 1px. This will cause us to end up loading the image at 1x1. Changing to scaleType="centerCrop" or setting scale(Scale.FILL) on the request, will load the image in as intended.

I believe this is working as intended, but let me know if this seems unintuitive.

from coil.

Stonos avatar Stonos commented on June 30, 2024

You're right, centerCrop works fine!

The reason I thought fitCenter would also work is because it works when setting an ImageView's src via XML:
image

from coil.

colinrtwhite avatar colinrtwhite commented on June 30, 2024

Ah good point. Looks like ImageView uses the parent's dimensions in that case. I think we could do this in Coil, but need to verify. I'd like to keep the same behaviour between android:src and load. Going to re-open this issue to track.

from coil.

colinrtwhite avatar colinrtwhite commented on June 30, 2024

I'm playing with a few different View measurement algorithms in the branch colin/view_size_experiment. I'm going to timebox this and ship the current behaviour in 0.6.1, though it's possible it might change in future versions.

from coil.

EvgenyPlaksin avatar EvgenyPlaksin commented on June 30, 2024

There was a similar problem, I set the layout_width to 0dp, and the picture did not load. Wrap_content solved the problem :)

from coil.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.