Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React Native - Vertical align image with resizeMode "contain"

Tags:

react-native

When an image has a resize mode "contain" it seems to align/justify the actual image in the center, the image content however is aligned/justified at flex start.

<Image resizeMode="contain" ...> <Text>Title</Text> </Image> 

With the following I'm seeing the text appearing above the image.

Is there any way to vertically align the contained image to top ?

like image 428
Kyle Johnson Avatar asked Oct 27 '15 10:10

Kyle Johnson


People also ask

How do I vertically align an image in React Native?

To vertically align image with resizeMode "contain" with React Native, we can use justifyContent . to set justifyContent to 'center' to center align the Image vertically. We also set the image height and width to make it display. As a result, we should see the image display vertically centered.

How do you align image in left in React Native?

Regarding the alignment of the image, react-native doesn't really care. Images are placed at the middle of the container. If you want to place the image left-aligned, you'll have to write a small algorithm which compares the actual dimensions of the image and dimensions of the container.

What is resizeMode in React Native?

resizeMode ​ contain : Scale the image uniformly (maintain the image's aspect ratio) so that both dimensions (width and height) of the image will be equal to or less than the corresponding dimension of the view (minus padding). stretch : Scale width and height independently, This may change the aspect ratio of the src.

How do I fit an image in React Native?

To fit an Image to the full width of the screen and maintain aspect ratio with React Native, we can set the width to null and the height to the height we want. to set the height of the Image to 300 and the width to null to fit the Image to make the width flexible and maintain aspect ratio.


1 Answers

I was able to simulate CSS backgroundPosition using the following code:

<View style={{ overflow: 'hidden' }}>   <Image src={{ uri: imageURI }} style={{ height: /*adjust_as_needed*/, resizeMode: 'cover' }} /> </View> 

Because of the overflow: 'hidden' on the View the heigh of the image can be adjusted without seeing the extra height of the image. You'll need to user 'cover' rather than 'contain' for the resize mode as well otherwise you'll end up with a centered image that isn't as wide as the View container if you set the height of the image too large.

In the top example below the Image height (blue dotted line) is larger than the bottom example and therefore the center line of the image sits lower in the view. By reducing the height of the image (blue dotted line) in the second example, the center line of the image moves up in the view.

enter image description here

like image 129
SomethingOn Avatar answered Oct 01 '22 11:10

SomethingOn