Функция MaterialTheme
Функция MaterialTheme из material3
оборачивает дерево composable и раздаёт тему.
Светлую или тёмную палитру передают в colorScheme
из
lightColorScheme
или
darkColorScheme.
Шрифты - в typography,
скругления - в shapes.
Весь экран - в лямбду content.
Синтаксис
MaterialTheme(
colorScheme = lightColorScheme(),
typography = Typography(),
shapes = Shapes(),
) {
content()
}
Параметры
| Параметр | Описание |
|---|---|
colorScheme |
Набор цветов. Тип -
ColorScheme.
|
typography |
Стили текста. Тип -
Typography.
|
shapes |
Формы углов карточек и кнопок. Тип -
Shapes.
|
content |
Лямбда с экраном, который читает тему. |
Пример
Давайте выведем текст в светлой теме по умолчанию:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
Text(text = "abcde")
}
}
}
}
На экране текст "abcde" получит цвет из светлой colorScheme.
Пример
Давайте зададим свою 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.material3.lightColorScheme
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val scheme = lightColorScheme(
primary = Color(0xFF1565C0),
surface = Color(0xFFE3F2FD),
)
MaterialTheme(colorScheme = scheme) {
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.surface),
) {
Text(
text = "12345",
color = MaterialTheme.colorScheme.primary,
)
}
}
}
}
}
На экране фон станет светло-голубым,
а текст "12345" - синим primary.
Смотрите также
-
функция
lightColorScheme,
которая собирает светлую палитру -
функция
darkColorScheme,
которая собирает тёмную палитру -
класс
ColorScheme,
который хранит primary, surface и другие цвета -
функция
Text,
который берёт цвет из темы по умолчанию