Intereting Posts
Поддержка перехода фрагмента 25.1.0 с Recyclerview Как понять забаву с = в Котлине? HttpLoggingInterceptor не регистрируется с модификацией 2 Общее литье в Котлине Предупреждение: предупреждение: поддерживаемая исходная версия 'RELEASE_7' из обработчика аннотаций 'android.arch.lifecycle.LifecycleProcessor' меньше, чем -source '1.8' Как разместить расширение Kotlin в файле класса? бросить, если оператор в Котлине Подстановочные знаки в Котлине для переменных Вопрос о намерениях в приложении для Android от java до kotlin Делать элементы меню прозрачными при расширении CollapsingToolbarLayout Дифференцировать неоднозначные расширения в Котлине Преобразование java-функции, которая использует байты для Kotlin Как программно добавить вид в макет Constraint? Мутатная строка из расширения Отправка предварительно рассчитанного результата от одной активности Kotlin в текстовое представление в другом

Facebook-мессенджер для анимации чата

Я пытаюсь сделать свой элемент списка анимированным после onClick (), как Facebook messenger. Я попытался сделать это с помощью animateLayoutChanges = true в макете списка элементов, а также в родительском макете recyclerView, но он не является гладким и имеет некоторые проблемы после первого щелчка, когда я хочу показать скрытые поля ( setVisibility (VISIBLE )), он работает неплохо, но setVisibility (GONE) работает не правильно, это то, на что похоже
введите описание изображения здесь

И я пытаюсь достичь этого

введите описание изображения здесь

Любой совет, как это сделать? это мой пользовательский вид

class MessageItemView : RelativeLayout { constructor(context: Context) : super(context) constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) private var messageTextView: TextView private var dateTextView: TextView private var itemView: View? = null init { itemView = LayoutInflater.from(context)?.inflate(R.layout.live_chat_list_item, this) messageTextView = itemView?.findViewById(R.id.live_chat_msg_text_id) as TextView dateTextView = itemView?.findViewById(R.id.message_received_date_txt_id) as TextView } fun setUPViewModelData(message: MessageModel) { itemView?.setOnClickListener { dateTextView.visibility = if (dateTextView.visibility == View.VISIBLE) View.GONE else View.VISIBLE delivered_status_txt_id.visibility = dateTextView.visibility } } 

И это xml этого представления

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:animateLayoutChanges="true" android:orientation="vertical"> <TextView android:id="@+id/message_received_date_txt_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:visibility="gone" /> <LinearLayout android:id="@+id/message_wrapper_layout_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/message_received_date_txt_id" android:orientation="vertical"> <TextView android:id="@+id/live_chat_msg_text_id" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <TextView android:id="@+id/delivered_status_txt_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/message_wrapper_layout_id" android:visibility="gone" /> </RelativeLayout> 

Я не понимаю, что не так в моей иерархии компоновки или что будет хорошей архитектурой, а также заинтересована в иерархии раскладки сообщений в блоге Fb … Любые eideas?

Solutions Collecting From Web of "Facebook-мессенджер для анимации чата"

Удалите анимацию из анимации из макета, а затем используйте TransitionManager из библиотеки поддержки:

 fun setUPViewModelData(message: MessageModel) { itemView?.setOnClickListener { TransitionManager.beginDelayedTransition(recyclerView) dateTextView.visibility = if (dateTextView.visibility == View.VISIBLE) View.GONE else View.VISIBLE delivered_status_txt_id.visibility = dateTextView.visibility } }