внешний вид по умолчанию для всего и вся? Или может планируется добавить?
Не знаком с флаттером, но в компоузе вроде есть
Сколько я ни пытался использовать XMLные темы (а это вообще адище) или спроектировать свои, пришёл к тому, что пусть лучше функция, которая собирает вью, принимает цвета.
Оно и не на XML построено, к счастью. https://developer.android.com/jetpack/compose/themes
Я понимаю, просто констатирую сложность и негибкость всей концепции.
Так, а в чём сложность и негибкость тут? Это же базовая тема. Задаёшь цвета, размеры, формы, оно везде используется по умолчанию. Где-то особый случай? Там уже ручками правишь, ещё и используя основу из темы.
Раз Mike сказал, значит так и есть)
Например, был такой textAppearance. Окей, куда-то я хочу передать готовый textAppearance, но в каком-то случае нужно взять не все его свойства, а где-то, наоборот, ещё и background задать. Вот поэтому мне кажется, что проще передавать отдельные компоненты.
Спасибо за доверие, но не стоит принимать чужое мнение целиком и безоговорочно.
Лишь имел в виду, что твое мнение, как опытного прогера, всегда стоит учитывать
Снова могу говорить лишь за флаттер, но мне кажется в компоузе должно быть аналогично: Темы можно копировать с изменением конкретных полей. getMyTextTheme().copyWith(sizy = 20)
Согласен, вот это прям хорошо. Только тогда нужно, чтобы у того же TextView не было отдельных textSize, lineHeight — только TextAppearance.
Видел что-то подобное в семплах от гугла, но могу ошибаться
Есть MaterialTheme цвета/текстовые стили/формы из которой используются в Material компонентах. Работает с помощью Ambients. https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTheme.kt;l=29?q=MaterialTheme%20&sq=
Text composable позволяет переопределять значения стиля с помощью параметров. Также можно использовать TextStyle.copy() https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Text.kt
В Compose человеческий типизированый подход с амбиентами, к счастью. Без этого ужаса theme/style в xml, который с несколькими неймспейсами и не понятно что из этого примениться, где нужно app: вместо android:, а то и вовсе без ничего, а где просто опечатку сделал.
Что за амбиенты? А хмл, да, ужасная дичь. А если вспомнить что каждая вьюха еще как хочет аттрибуты темы использует, так вообще в результате гадание на кофейной гуще. Но справедливости ради тут не один лишь хмл виноват.
Что-то вроде контекста, но сделанного правильно.
Там совсем не xml виноват, а дурацкий подход стайлингов (возникший эволюционно-х*як-и-в-продашн) и отсутствие линтера для атрибуты. :)
Хмл виноват потому что никакой защиты от подобной дичи нету в этом механизме. А так да. Хряк хряк и в продакшен - вот где настоящее зло.
Ну вот компоуз сделан без хмл, в обычном котлин-коде, в котлине я чёт тоже не припомню прям защиты от дураков :)
В коде хоть можно открыть MaterialTheme и посмотреть что там провайдится. А в xml с этим беда. :)
В плане атрибутов в коде все намного лучше читается. Чем бесконечное наследования хмл, да еще и непонятно каким классом в результате какой атрибут будет использоваться. Уже на уровне текстинпутлейаута начинаются непонятки, а что и как, и куда какой текстапиаренс задать. А это еще вполне себе адекватно работающая вьюха.
Обсуждают сегодня