Класс ColorScheme
Класс ColorScheme описывает палитру Material3.
Собирают его функциями
lightColorScheme,
darkColorScheme
и dynamic-вариантами.
Частые поля: primary и onPrimary
для акцента и текста на нём,
background для экрана,
surface для карточек и панелей.
Отдельные уроки на каждый слот не делают.
Копию с заменой цветов даёт метод
copy.
Синтаксис
MaterialTheme.colorScheme.primary
Методы
| Метод | Описание |
|---|---|
copy |
Возвращает схему с подменой отдельных цветов. |
Пример
Давайте возьмём primary и surface из темы:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.ui.Modifier
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.surface),
) {
Text(
text = "abcde",
color = MaterialTheme.colorScheme.primary,
)
}
}
}
}
}
На экране фон возьмёт surface,
текст "abcde" - primary из ColorScheme.
Пример
Давайте изменим только primary через copy:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.ui.graphics.Color
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
val scheme = MaterialTheme.colorScheme.copy(
primary = Color(0xFFC62828),
)
MaterialTheme(colorScheme = scheme) {
Text(
text = "12345",
color = MaterialTheme.colorScheme.primary,
)
}
}
}
}
}
На экране текст "12345" станет красным,
остальные слоты схемы сохранятся.
Смотрите также
-
метод
copy,
который меняет отдельные цвета схемы -
функция
MaterialTheme,
которая раздаёт colorScheme composable-ам -
класс
Color,
тип каждого поля ColorScheme -
функция
lightColorScheme,
которая создаёт новую светлую схему