Ответ
Да, работал с Material Design, включая компоненты из библиотеки com.google.android.material. Использовал основные элементы: BottomNavigationView, FloatingActionButton, Snackbar, TextInputLayout с TextInputEditText, CardView. Также настраивал темы с атрибутами colorPrimary, colorSecondary и применял Material Motion для анимаций.
Пример кода для TextInputLayout с валидацией:
val textInputLayout = findViewById<TextInputLayout>(R.id.text_input_layout)
val editText = findViewById<TextInputEditText>(R.id.edit_text)
editText.doAfterTextChanged { text ->
if (text.isNullOrEmpty()) {
textInputLayout.error = "Поле не может быть пустым"
} else {
textInputLayout.error = null
}
}
Слежу за обновлениями Material 3 (MaterialComponents), включая динамическую цветовую схему (dynamicColor) и новые компоненты, такие как SearchBar.
Ответ 18+ 🔞
А, ну так это ж классика, ёпта! Работал, конечно, с этим самым Material Design, со всей этой библиотекой com.google.android.material. Ну знаешь, эти ихние штуки: BottomNavigationView внизу болтается, FloatingActionButton этакий наглый, торчит посередь экрана, Snackbar выскакивает как назойливое напоминание... В общем, полный набор, блядь.
И TextInputLayout с TextInputEditText внутри — это вообще отдельная песня, ядрёна вошь! Чтобы красиво ошибку показывать, а не просто красным текстом в углу. Карточки эти, CardView, настраивал, тени там, скругления... Чистая магия, а не работа.
Темы, блядь, возился — colorPrimary, colorSecondary. Потом ещё анимации эти Material Motion подключал, чтобы всё плавненько так перетекало. Выглядит, конечно, овердохуища, но иногда хочется просто впендюрить этот дизайн от гугла, когда всё ломается из-за какой-нибудь ерунды.
Вот, смотри, как я с этим TextInputLayout изголялся, чтобы ошибку динамически показывать:
val textInputLayout = findViewById<TextInputLayout>(R.id.text_input_layout)
val editText = findViewById<TextInputEditText>(R.id.edit_text)
editText.doAfterTextChanged { text ->
if (text.isNullOrEmpty()) {
textInputLayout.error = "Поле не может быть пустым"
} else {
textInputLayout.error = null
}
}
Просто, да? А нет, блядь! Потому что если ты это в Fragment засунешь или в RecyclerView, то начинается цирк с конями. NullPointerException вылезает как чёрт из табакерки, и волнение ебать — терпения ноль ебать.
И да, слежу я за ихними апдейтами, за этой Material 3. Говорят, там теперь dynamicColor — цвета под обои телефона подстраиваются. Выглядит, вроде, хитрая жопа, но доверия ебать ноль, что не сломается на половине девайсов. Новые компоненты пробовал, типа SearchBar — вроде ничего так, но ощущение, что опять накосячат где-нибудь. В общем, работа и есть работа, чувак.