#android #kotlin #android-gradle-plugin #android-jetpack-compose
Вопрос:
В любой версии Android Studio до версии Bumblebee 2011.1.1 Canary 11 следующее представление не отображается и фактически нарушает просмотрщик неожиданными способами.
@Preview
@Composable
fun ColoredText(color: Color = Color.Red) = Text("text")
Стабильная версия Arctic Fox выдает метод неоснователя, в то время как канарейка выдает предупреждение о том, что она не может найти представление. Как я могу заставить предварительный просмотр снова работать?
Ответ №1:
С @Preview Composables
основным ограничением заключается в том, что функции предварительного просмотра, которые можно компоновать, не должны принимать никаких параметров.
ColoredText
Ваш составляемый принимает color: Color = Color.Red
в качестве параметра, следовательно, не отображается. Вы также увидите @Preview Annotation
, что ваш код выделен красным цветом.
Для предварительного просмотра кода вы можете сделать предварительный просмотр составным именем ColoredTextPreview()
, которое не принимает никаких параметров. Используйте это для предварительного просмотра ColoredText()
и передачи параметра цвета
@Preview
@Composable
//preview doesn't accept parameters
fun ColoredTextPreview() = ColoredText(Color.Red)
@Composable
//create a 2nd non-preview composable that accepts parameters
fun ColoredText(color1: Color = Color.Red) {
Text(
text = "text",
color = color1,
modifier = Modifier.fillMaxWidth()
)
}
Обязательно включите эту строку кода в свои инструкции по импорту, чтобы помочь с цветами.
import androidx.compose.ui.graphics.Color
Спасибо,
Комментарии:
1. Это хороший обходной путь, я просто отмечу, что параметр IDE позволяет
@Preview
принимать функцию, имеющую параметры, если они имеют значения по умолчанию, поэтому выделение красной ошибки не происходит. И, кроме того, есть еще@PreviewParameter
кое-что, заслуживающее упоминания, но выходящее за рамки данного вопроса. Тем не менее спасибо за подсказку, я отмечу, как ответил.