Карта

Составная Card действует как контейнер Material Design для вашего пользовательского интерфейса. Карточки обычно представляют собой единый связный фрагмент контента. Ниже приведены некоторые примеры того, где вы можете использовать карточку:

  • Товар в приложении для покупок.
  • Новостная статья в новостном приложении.
  • Сообщение в приложении для связи.

Именно фокус на отображении одного фрагмента контента отличает Card от других контейнеров. Например, Scaffold обеспечивает общую структуру для всего экрана. Card — это, как правило, меньший элемент пользовательского интерфейса внутри более крупного макета, тогда как компонент макета, такой как Column или Row , предоставляет более простой и общий API.

Приподнятая карточка, заполненная текстом и значками.
Рисунок 1. Пример карточки, заполненной текстом и значками.

Базовая реализация

Card ведет себя во многом как другие контейнеры в Compose. Вы объявляете его содержимое, вызывая другие компонуемые объекты внутри него. Например, рассмотрим, как Card содержит вызов Text в следующем минимальном примере:

@Composable
fun CardMinimalExample() {
    Card() {
        Text(text = "Hello, world!")
    }
}

Расширенные реализации

См. ссылку на определение API Card . Он определяет несколько параметров, которые позволяют настраивать внешний вид и поведение компонента.

Вот некоторые ключевые параметры, на которые следует обратить внимание:

  • elevation : добавляет к компоненту тень, благодаря которой он кажется приподнятым над фоном.
  • colors : использует тип CardColors для установки цвета по умолчанию как для контейнера, так и для всех дочерних элементов.
  • enabled : если для этого параметра указано значение false , карта будет отображаться как отключенная и не будет реагировать на действия пользователя.
  • onClick : Обычно Card не принимает события щелчка. Таким образом, основная перегрузка, на которую вы хотели бы обратить внимание, — это та, которая определяет параметр onClick . Вы должны использовать эту перегрузку, если хотите, чтобы ваша реализация Card реагировала на нажатия пользователя.

В следующем примере показано, как можно использовать эти параметры, а также другие общие параметры, такие как shape и modifier .

Заполненная карточка

Ниже приведен пример того, как можно реализовать заполненную карточку.

Ключевым моментом здесь является использование свойства colors для изменения цвета заливки.

@Composable
fun FilledCardExample() {
    Card(
        colors = CardDefaults.cardColors(
            containerColor = MaterialTheme.colorScheme.surfaceVariant,
        ),
        modifier = Modifier
            .size(width = 240.dp, height = 100.dp)
    ) {
        Text(
            text = "Filled",
            modifier = Modifier
                .padding(16.dp),
            textAlign = TextAlign.Center,
        )
    }
}

Эта реализация выглядит следующим образом:

Карточка заполнена цветом варианта поверхности из темы материала.
Рисунок 2. Пример заполненной карточки.

Повышенная карта

Следующий фрагмент демонстрирует, как реализовать повышенную карту. Используйте выделенный ElevatedCard composable.

Свойство elevation можно использовать для управления внешним видом высоты и результирующей тени.

@Composable
fun ElevatedCardExample() {
    ElevatedCard(
        elevation = CardDefaults.cardElevation(
            defaultElevation = 6.dp
        ),
        modifier = Modifier
            .size(width = 240.dp, height = 100.dp)
    ) {
        Text(
            text = "Elevated",
            modifier = Modifier
                .padding(16.dp),
            textAlign = TextAlign.Center,
        )
    }
}

Эта реализация выглядит следующим образом:

Карточка возвышается над фоном приложения и имеет тень.
Рисунок 3. Пример приподнятой карты.

Контурная карта

Ниже приведен пример контурной карточки. Используйте специальный компонуемый элемент OutlinedCard .

@Composable
fun OutlinedCardExample() {
    OutlinedCard(
        colors = CardDefaults.cardColors(
            containerColor = MaterialTheme.colorScheme.surface,
        ),
        border = BorderStroke(1.dp, Color.Black),
        modifier = Modifier
            .size(width = 240.dp, height = 100.dp)
    ) {
        Text(
            text = "Outlined",
            modifier = Modifier
                .padding(16.dp),
            textAlign = TextAlign.Center,
        )
    }
}

Эта реализация выглядит следующим образом:

Карточка обведена тонкой черной рамкой.
Рисунок 4. Пример контурной карточки.

Ограничения

Карточки не имеют встроенных действий прокрутки или закрытия, но могут интегрироваться в компонуемые элементы, предлагающие эти функции. Например, чтобы реализовать смахивание для закрытия на карточке, интегрируйте ее с компонуемым SwipeToDismiss . Для интеграции с прокруткой используйте модификаторы прокрутки, такие как verticalScroll . Дополнительную информацию см. в документации по прокрутке .

Дополнительные ресурсы

,

Составная Card действует как контейнер Material Design для вашего пользовательского интерфейса. Карточки обычно представляют собой единый связный фрагмент контента. Ниже приведены некоторые примеры того, где вы можете использовать карточку:

  • Товар в приложении для покупок.
  • Новостная статья в новостном приложении.
  • Сообщение в приложении для связи.

Именно фокус на отображении одного фрагмента контента отличает Card от других контейнеров. Например, Scaffold обеспечивает общую структуру для всего экрана. Card — это, как правило, меньший элемент пользовательского интерфейса внутри более крупного макета, тогда как компонент макета, такой как Column или Row , предоставляет более простой и общий API.

Приподнятая карточка, заполненная текстом и значками.
Рисунок 1. Пример карточки, заполненной текстом и значками.

Базовая реализация

Card ведет себя во многом как другие контейнеры в Compose. Вы объявляете его содержимое, вызывая другие компонуемые объекты внутри него. Например, рассмотрим, как Card содержит вызов Text в следующем минимальном примере:

@Composable
fun CardMinimalExample() {
    Card() {
        Text(text = "Hello, world!")
    }
}

Расширенные реализации

См. ссылку на определение API Card . Он определяет несколько параметров, которые позволяют настраивать внешний вид и поведение компонента.

Вот некоторые ключевые параметры, на которые следует обратить внимание:

  • elevation : добавляет к компоненту тень, благодаря которой он кажется приподнятым над фоном.
  • colors : использует тип CardColors для установки цвета по умолчанию как для контейнера, так и для всех дочерних элементов.
  • enabled : если для этого параметра указано значение false , карта будет отображаться как отключенная и не будет реагировать на действия пользователя.
  • onClick : Обычно Card не принимает события щелчка. Таким образом, основная перегрузка, на которую вы хотели бы обратить внимание, — это та, которая определяет параметр onClick . Вы должны использовать эту перегрузку, если хотите, чтобы ваша реализация Card реагировала на нажатия пользователя.

В следующем примере показано, как можно использовать эти параметры, а также другие общие параметры, такие как shape и modifier .

Заполненная карточка

Ниже приведен пример того, как можно реализовать заполненную карточку.

Ключевым моментом здесь является использование свойства colors для изменения цвета заливки.

@Composable
fun FilledCardExample() {
    Card(
        colors = CardDefaults.cardColors(
            containerColor = MaterialTheme.colorScheme.surfaceVariant,
        ),
        modifier = Modifier
            .size(width = 240.dp, height = 100.dp)
    ) {
        Text(
            text = "Filled",
            modifier = Modifier
                .padding(16.dp),
            textAlign = TextAlign.Center,
        )
    }
}

Эта реализация выглядит следующим образом:

Карточка заполнена цветом варианта поверхности из темы материала.
Рисунок 2. Пример заполненной карточки.

Повышенная карта

Следующий фрагмент демонстрирует, как реализовать повышенную карту. Используйте выделенный ElevatedCard composable.

Свойство elevation можно использовать для управления внешним видом высоты и результирующей тени.

@Composable
fun ElevatedCardExample() {
    ElevatedCard(
        elevation = CardDefaults.cardElevation(
            defaultElevation = 6.dp
        ),
        modifier = Modifier
            .size(width = 240.dp, height = 100.dp)
    ) {
        Text(
            text = "Elevated",
            modifier = Modifier
                .padding(16.dp),
            textAlign = TextAlign.Center,
        )
    }
}

Эта реализация выглядит следующим образом:

Карточка возвышается над фоном приложения и имеет тень.
Рисунок 3. Пример приподнятой карты.

Контурная карта

Ниже приведен пример контурной карточки. Используйте специальный компонуемый элемент OutlinedCard .

@Composable
fun OutlinedCardExample() {
    OutlinedCard(
        colors = CardDefaults.cardColors(
            containerColor = MaterialTheme.colorScheme.surface,
        ),
        border = BorderStroke(1.dp, Color.Black),
        modifier = Modifier
            .size(width = 240.dp, height = 100.dp)
    ) {
        Text(
            text = "Outlined",
            modifier = Modifier
                .padding(16.dp),
            textAlign = TextAlign.Center,
        )
    }
}

Эта реализация выглядит следующим образом:

Карточка обведена тонкой черной рамкой.
Рисунок 4. Пример контурной карточки.

Ограничения

Карточки не имеют встроенных действий прокрутки или закрытия, но могут интегрироваться в компонуемые элементы, предлагающие эти функции. Например, чтобы реализовать смахивание для закрытия на карточке, интегрируйте ее с компонуемым SwipeToDismiss . Для интеграции с прокруткой используйте модификаторы прокрутки, такие как verticalScroll . Дополнительную информацию см. в документации по прокрутке .

Дополнительные ресурсы