Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
235 of 502 menu
◀ ▶

Метод copy

Метод copy класса ColorScheme оставляет прежние значения, кроме переданных параметров. Чаще меняют primary, onPrimary, background или surface. Каждый аргумент - значение класса Color.

Синтаксис

val accent = scheme.copy(primary = Color.Red)

Параметры

Параметр Описание
primary Новый акцентный цвет. Необязательный параметр.
onPrimary Цвет контента поверх primary. Необязательный параметр.
background Фон экрана. Необязательный параметр.
surface Фон карточек и панелей. Необязательный параметр.

Пример

Давайте сменим только primary в текущей теме:

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(0xFF6A1B9A), ) MaterialTheme(colorScheme = scheme) { Text( text = "abcde", color = MaterialTheme.colorScheme.primary, ) } } } } }

На экране текст "abcde" станет фиолетовым primary, фон и surface останутся как в исходной теме.

Пример

Давайте вместе поменяем surface и onPrimary:

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.Button import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.ui.Modifier 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(0xFF0277BD), onPrimary = Color.White, surface = Color(0xFFE1F5FE), ) MaterialTheme(colorScheme = scheme) { Box( modifier = Modifier .fillMaxSize() .background(MaterialTheme.colorScheme.surface), ) { Button(onClick = { }) { Text(text = "12345") } } } } } } }

На экране фон станет голубым surface, кнопка получит синий primary и белый текст onPrimary.

Смотрите также

  • класс ColorScheme,
    у которого вызывают copy
  • функция lightColorScheme,
    которая создаёт схему с нуля
  • класс Color,
    которым задают аргументы copy
  • функция MaterialTheme,
    которой передают результат copy
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить