Konkrétní Text je třeba Povrch aby bylo světlo v Tmavém režimu

0

Otázka

Mám vzorek, který jsem použít Jetpack skládat v něm : https://github.com/alirezaeiii/SampleCompose

Tady je moje Téma pro aplikace, která je výchozí Android Studio :

@Composable
fun ComposeTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable() () -> Unit) {
    val colors = if (darkTheme) {
        DarkColorPalette
    } else {
        LightColorPalette
    }

    MaterialTheme(
        colors = colors,
        typography = Typography,
        shapes = Shapes,
        content = content
    )
}

Základnu na to, když jsem v temné režimu, Text je barva světla. jako příklad Textů v Seznamu položky:

@Composable
fun VerticalListItem(item: Poster, callback: OnClickListener) {
    val typography = MaterialTheme.typography
    Column(
        modifier = Modifier
            .fillMaxWidth()
            .padding(16.dp)
            .clickable(onClick = { callback.onClick(item) })
    ) {
        ImageView(url = item.poster, height = 150.dp)
        Spacer(Modifier.height(16.dp))
        Text(
            text = item.name,
            style = typography.h6
        )
        Text(
            text = item.release,
            style = typography.body2
        )
        Text(
            text = item.playtime,
            style = typography.subtitle2
        )
    }
}

Mám DetailView takto :

@Composable
fun DetailView(item: Poster, pressOnBack: () -> Unit, sendNotification: () -> Unit) {
    val typography = MaterialTheme.typography
    Column(
        modifier = Modifier
            .verticalScroll(rememberScrollState())
            .fillMaxHeight()
    ) {
        Box {
            ImageView(url = item.poster, height = 420.dp)
            Icon(
                imageVector = Icons.Filled.ArrowBack,
                tint = Color.White,
                contentDescription = null,
                modifier = Modifier
                    .padding(12.dp)
                    .clickable(onClick = pressOnBack)
            )
        }
        Spacer(Modifier.height(8.dp))
        Button(
            onClick = sendNotification,
            modifier = Modifier.align(Alignment.CenterHorizontally)
        ) {
            Text(text = "DeepLink")

        }
        Spacer(Modifier.height(8.dp))
        Surface {
            Text(
                modifier = Modifier.padding(8.dp),
                text = item.description,
                style = typography.body2
            )
        }
    }
}

Jak vidíte, Text je obklopen Surface, jinak to bude Tmě v Tmavém režimu. Proč je, že? Proč moje další Texty, například v VerticalListItem není třeba Surface? Mám také Tlačítko v DetailView což se ukazuje Světlo v Tmavém režimu. Nemohu pochopit, proč tento konkrétní Text je třeba Surface.

android android-jetpack-compose
2021-11-23 10:57:57
1

Nejlepší odpověď

0

Odstín je odvozena z nadřazeného obsahu barvy. Box není povrchu, nemá žádné pozadí, takže obsah barva je lhostejný. Každopádně nemusíš to zabalit do povrchu, stačí nastavit barvu pro text:

MaterialTheme.colors.onSurface

nebo

color = contentColorFor(background)
2021-11-23 13:50:04

To není zabalené v Krabici, spíše Sloupec. Box je uzavřen poté Ikonu. Stejně jako VerticalListItem. BTW děkuji za návrh.
Ali

@Ali to je stejný problém. Pokud se barva nemůže být odvozen budete muset zadat. Můžete dokonce použít contentColorFor()
zjmo

@Ali skládat DetailView na stejném místě, kde máte VerticalListItem composable a uvidíme, jestli barva, funguje bez povrchu. Pokud ano, problém je v mateřské composable
zjmo

Ale například, proč se moje Tlačítko, není třeba upřesnit, že?
Ali

@Ali-možná proto, že již máte výchozí sadu barev, tlačítka použít primární/onPrimary myslím, že i pro text, závisí na tom, kde to
zjmo

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................