Ответ
Работал с TextView, EditText, Button, RecyclerView, ImageView, ConstraintLayout, LinearLayout, CardView, ViewPager2, WebView.
Особенно часто использовал RecyclerView с адаптерами и холдерами:
class Adapter(private val items: List<String>) : RecyclerView.Adapter<Adapter.ViewHolder>() {
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textView: TextView = view.findViewById(R.id.textView)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.textView.text = items[position]
}
}
Также активно применял ConstraintLayout для сложных макетов, ViewPager2 для горизонтальной навигации и WebView для отображения веб-контента.
Ответ 18+ 🔞
А, ну это ж классика, ебать мои старые костыли! Каждый раз, когда начинаешь новый проект, будто на дворе 2002-й год — опять эти TextView да EditText лепишь. Но без них нихуя не работает, так что приходится.
Особенно этот ваш RecyclerView — ёпта, целая история. Сначала пишешь адаптер, потом холдер, потом биндишь... Чувак, я помню времена, когда списки были на ListView, и там ад был проще, честно. А сейчас — овердохуища кода, чтобы просто список текста показать. Смотри, вот же, типичный угар:
class Adapter(private val items: List<String>) : RecyclerView.Adapter<Adapter.ViewHolder>() {
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textView: TextView = view.findViewById(R.id.textView)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.textView.text = items[position]
}
}
Выглядит-то просто, а попробуй добавить клики на элементы, или разные типы вьюх, или свайпы — тут же волнение ебать начинается, терпения ноль ебать. Но зато, когда всё работает и плавно скроллится — красота, пизда рулю.
А ConstraintLayout — это вообще хитрая жопа. Казалось бы, расставил констрейнты и живи спокойно. Ан нет! То один элемент на другой наезжает, то на разных экранах всё плывёт. Час сидишь, привязываешь одну вьюху к краю родителя, а она, сука, убегает за экран. Сам от себя охуеваешь.
ViewPager2 — молодчага, конечно. После старого ViewPager с его костылями — просто небо и земля. Вертикальный скролл, нормальная работа с RecyclerView.Adapter — красота. Только вот с трансформациями и анимациями иногда такой пиздец творится, что хочется сказать: «Идите вы все нахуй!», как тот самый Гамлет.
Ну и WebView — это отдельная песня, ядрёна вошь. Загрузил в него страницу, а она либо грузится полжизни, либо JS кривой всё ломает, либо куки теряются. Доверия ебать ноль к этому компоненту. Но что поделать — если нужно в приложении сайт показать, то идёшь на эту каторгу.
В общем, работа с вьюхами в андроиде — это как сборка мебели из Икеи. Вроде по инструкции делаешь, а в итоге остаётся лишний винтик, и ты сидишь с хуем в пальто, думая, куда его, блядь, прикрутить. Но когда собираешь — приложение живёт, и даже иногда не вылетает.