Shangazi Mkubwa
Shangazi Mkubwa

Reputation: 75

Tailwind Css in React Native Box Shadow

I am new to react native. I am trying to apply a shadow effect on a restaurant component I created. Unfortunately I cant get the shadow to take effect. All other styling works. I am using tailwind css for this project. Configuration for tailwind is ok. The only problem is shadowing so far. I have tried to apply shadowing to other components but the results are the same, no effect is observed. Where am I going wrong or what am I not seeing.

<TouchableOpacity className="bg-white mr-3 shadow">
  <Image 
    source={{
      uri: imgUrl,
    }}
    className="h-36 w-36 rounded-sm"
  />
  <View>
    <Text className="font-bold text-lg pt-2">{title}</Text>
    <View className="flex-row items-center space-x-1">
      <StarIcon color="green" opacity={0.5} size={22} />
      <Text className="text-xs text-gray-500">
        <Text className="text-green-500">{rating}</Text> : {genre}
      </Text>
    </View>
    <View className="flex-row items-center space-x-1">
      <LocationMarkerIcon color="gray" size={22} opacity={0.4}/>
      <Text className="text-xs text-gray-500"> Nearby : {address}</Text>
    </View>
  </View>
</TouchableOpacity>

Upvotes: 2

Views: 7957

Answers (5)

Gustavo Batista
Gustavo Batista

Reputation: 1

Nowadays shadow prop works well in NativeWind.

Take my code as example:

<View className="flex-1 bg-white p-4">
    <View className="flex-1 bg-blue-500 rounded-2xl shadow shadow-black/>
</View>

It's handled both Android and iOS with no problem

Just remember sometimes you'll need to add a background color to work See more in the docs here

Box with shadow-2xl applied

Without Shadow

Upvotes: 0

Haseeb Khan
Haseeb Khan

Reputation: 61

TailwindCSS in React Native is: nativewind Shadow doesn't work for android devices on nativewind. You should use External Styling instead of nativewind shadow properties like:

  1. import { StyleSheet } from "react-native"

    const styles = StyleSheet.create({
        shadow: {
            shadowColor: "#000",
            shadowOffset: {
                width: 0,
                height: 3,
            },
            shadowOpacity: 0.27,
            shadowRadius: 4.65,
    
            elevation: 6,
        }
    })
    export default styles
    
  2. Usage: <View className="...." style={styles.shadow} />

Upvotes: 4

raghava
raghava

Reputation: 270

instead of shadow you can simply replace t.shadow, t.shadowMd, t.shadowLg, t.shadow2xl

tailwindCSS classes are somewhat different for react-native-tailwindcss

still confused, please refer here

Upvotes: 0

Shangazi Mkubwa
Shangazi Mkubwa

Reputation: 75

Shadow doesn't work for android devices on tailwind css. The work around I used was to set the style prop to elevation:2 , the higher the number the darker the shadow. <TouchableOpacity className="mr-3 bg-white" style={{ elevation:2 }}> [enter link description here][1]

[1]: How to set shadows in React Native for android? this question was well addressed here.

Upvotes: 2

MehdiNasiriPoor
MehdiNasiriPoor

Reputation: 334

first of all your view that have shadow must have a backgroundColor, even white, and your style is something like this: style={{backgroundColor:'#fff', shadowColor:'#000', shadowOffset:{width:0, height:3}, shadowOpacity:0.5, elevation:3}}

Upvotes: 1

Related Questions