diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt index 50a808db..b5e4540b 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt @@ -23,6 +23,14 @@ import androidx.recyclerview.widget.RecyclerView fun RecyclerView.Adapter<*>.autoScrollToStart(recyclerView: RecyclerView) { registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { + override fun onChanged() { + val layoutManager = recyclerView.layoutManager as? LinearLayoutManager ?: return + + if (layoutManager.stackFromEnd) { + recyclerView.scrollToPosition(itemCount - 1) + } + } + override fun onItemRangeInserted(positionStart: Int, itemCount: Int) { val layoutManager = recyclerView.layoutManager as? LinearLayoutManager ?: return diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt index de72ba7b..c273e87a 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt @@ -27,7 +27,6 @@ import android.view.Window import android.view.WindowManager import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders -import androidx.recyclerview.widget.LinearLayoutManager import com.jakewharton.rxbinding2.view.clicks import com.jakewharton.rxbinding2.widget.textChanges import com.moez.QKSMS.R @@ -68,10 +67,8 @@ class QkReplyActivity : QkThemedActivity(), QkReplyView { toolbar.clipToOutline = true - adapter.autoScrollToStart(messages) - - messages.layoutManager = LinearLayoutManager(this).apply { stackFromEnd = true } messages.adapter = adapter + messages.adapter?.autoScrollToStart(messages) // These theme attributes don't apply themselves on API 21 if (Build.VERSION.SDK_INT <= 22) { diff --git a/presentation/src/main/res/drawable/ic_unfold_less_black_24dp.xml b/presentation/src/main/res/drawable/ic_unfold_less_black_24dp.xml new file mode 100644 index 00000000..7282a975 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_unfold_less_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/drawable/ic_unfold_more_black_24dp.xml b/presentation/src/main/res/drawable/ic_unfold_more_black_24dp.xml new file mode 100644 index 00000000..e9ba7540 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_unfold_more_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/layout/qkreply_activity.xml b/presentation/src/main/res/layout/qkreply_activity.xml index d838382a..c04c2cdb 100644 --- a/presentation/src/main/res/layout/qkreply_activity.xml +++ b/presentation/src/main/res/layout/qkreply_activity.xml @@ -41,12 +41,14 @@ android:clipToPadding="false" android:paddingBottom="8dp" android:paddingTop="8dp" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constrainedHeight="true" app:layout_constraintBottom_toBottomOf="@id/composeBackground" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_max="220dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/toolbar" + app:stackFromEnd="true" tools:listitem="@layout/message_list_item_in" /> - - + android:icon="@drawable/ic_unfold_more_black_24dp" + android:title="@string/qkreply_menu_expand" + app:showAsAction="ifRoom" /> + android:visible="false" + app:showAsAction="ifRoom" /> + +