Billy Newman
02/27/2023, 6:51 PMKirill Grouchnikov
02/27/2023, 6:55 PMMaterialTheme
wrapper that provides that color scheme? If so, how do you expect its onSurfaceVariant
to change? Those entries are not “aware” of the background color of your surface.Billy Newman
02/27/2023, 7:03 PMSurface() { //light
MyTextComposable()
}
Surface(color = MaterialTheme.colorScheme.primary) { // dark
MyTextComposable()
}
@Composable
fun MyTextComposable() {
CompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.onSurfaceVariant) {
Text(...)
}
}
This worked w/ the material2 compose library out of the box. However, material3 the text is always black.Kirill Grouchnikov
02/27/2023, 7:06 PMLocalContentColor
always sees the same onSurfaceVariant
MaterialTheme
that is using dark colorsMaterialTheme(*darkColorS*cheme())
Billy Newman
02/27/2023, 7:22 PMKirill Grouchnikov
02/27/2023, 8:10 PMimport androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.*
fun main() = application {
Window(
onCloseRequest = ::exitApplication,
state = WindowState(
placement = WindowPlacement.Floating,
position = WindowPosition.Aligned(alignment = Alignment.Center),
size = DpSize(400.dp, 400.dp)
)
) {
Column(modifier = Modifier.fillMaxSize()) {
MaterialTheme(colorScheme = lightColorScheme()) {
MySurface(modifier = Modifier.fillMaxWidth().fillMaxHeight(0.5f))
}
MaterialTheme(colorScheme = darkColorScheme()) {
MySurface(modifier = Modifier.fillMaxWidth().fillMaxHeight(1.0f))
}
}
}
}
@Composable
fun MySurface(modifier: Modifier) {
Surface(modifier = modifier) {
Column(modifier = Modifier.fillMaxSize().padding(12.dp)) {
Text(color = MaterialTheme.colorScheme.onSurface, text = "Text 1")
Text(color = MaterialTheme.colorScheme.onSurfaceVariant, text = "Text 2")
}
}
}
Surface
Billy Newman
02/28/2023, 2:44 PM