'How do I set a shadow color for Jetpack Compose?
Sorry, I can hardly speak English.
machine translation:
How do I set a shadow color for Jetpack Compose?
I can set shadows, but they're ugly.
Jetpack Compose code:
Surface(
    modifier = Modifier.width(160.dp).height(56.dp),
    shape = CircleShape,
    elevation = 2.dp,
) {
    ...
}
I want to create a shadow in the code below.
SwiftUI code:
ZStack {
    ...
}
.shadow(color: Color("button_shadow"), radius: 4, x: 0, y: 2)
.shadow(color: Color("button_shadow"), radius: 20, x: 0, y: 4)
Dark mode also requires a white shadow.
You want to be able to customize the color of the shadow.
Solution 1:[1]
In my case for cycle I use this workaround:
@Composable
fun MyButton(){
    Box(
        modifier = Modifier
            .size(64.dp)
            .background(
                brush = Brush.radialGradient(
                    colors = listOf(
                        Color.Yellow,
                        Color.Transparent
                    )
                )
            )
            .padding(bottom = 4.dp),
        contentAlignment = Alignment.Center
    ) {
        Surface(
            shape = CircleShape,
            modifier = Modifier
                .size(55.dp)
                .background(Color.Transparent)
                .clickable { }
        ) {
            Box(
                modifier = Modifier.padding()
                    .background(Color.Gray),
                contentAlignment = Alignment.Center
            ) {
                Icon(
                    modifier = Modifier.size(35.dp),
                    imageVector = Icons.Filled.Refresh,
                    contentDescription = "",
                    tint =  Color.Yellow
                )
            }
        }
    }
}
there is the preview:
Solution 2:[2]
This is not possible at the moment but you can star the issue here: Link to Issue Tracker
The idea would be to have a modifier for the color, opacity, shape etc.
Solution 3:[3]
the link in the comment of @EpicPandaForce uses converts color to int using android.graphics.Color.Argb(Long) which required Api Level >= 26. I found another link in that gist comment in which function argb is used and it is in API level 1 added.
https://gist.github.com/arthurgonzaga/598267f570e38425fc52f97b30e0619d
Solution 4:[4]
Compose 1.2.0-alpha06 now supports shadow color attribute for the graphics layer modifier!
https://developer.android.com/jetpack/androidx/releases/compose-ui#1.2.0-alpha06
Solution 5:[5]
Well, this has recently changed and you can do it using Material 3 Jetpack Compose library. Just call shadow on modifier and set desired color.
Add dependency
implementation 'androidx.compose.material3:material3:1.0.0-alpha12'
implementation "androidx.compose.ui:1.2.0-beta02"
and add shadow modifier.
 .shadow(
         elevation = 8.dp,
         ambientColor = primaryBlue,
         spotColor = primaryBlue
        )
sample code.
    Image(
        painter = painterResource(id = R.drawable.ic_capture_icon),
        contentDescription = "capture",
        modifier = Modifier
            .padding(20.dp)
            .background(shape = RoundedCornerShape(15.dp), color = primaryBlue)
            .size(60.dp)
            .shadow(
                elevation = 8.dp,
                ambientColor = primaryBlue,
                spotColor = primaryBlue
            )
            .align(Alignment.BottomEnd)
            .padding(12.dp)
            .clickable {
                context.startActivity(Intent(context, GeoSpatialActivity::class.java))
            },
        colorFilter = ColorFilter.tint(color = Color.White)
    )
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | Evgenii Doikov | 
| Solution 2 | Code Poet | 
| Solution 3 | Zaki Shaikh | 
| Solution 4 | Nek.12 | 
| Solution 5 | 



