diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt
index 8bfd93bc..55d6d80d 100644
--- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt
@@ -81,6 +81,8 @@ class ThreadActivity : SimpleActivity() {
private val TYPE_SEND = 15
private val TYPE_DELETE = 16
+ private val SCROLL_TO_BOTTOM_FAB_LIMIT = 20
+
private var threadId = 0L
private var currentSIMCardIndex = 0
private var isActivityVisible = false
@@ -144,6 +146,7 @@ class ThreadActivity : SimpleActivity() {
}
setupThread()
+ setupScrollFab()
}
} else {
finish()
@@ -442,6 +445,22 @@ class ThreadActivity : SimpleActivity() {
}
}
+ private fun setupScrollFab() {
+ thread_messages_list.addOnScrollListener(object : RecyclerView.OnScrollListener() {
+ override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+ super.onScrolled(recyclerView, dx, dy)
+ val layoutManager = thread_messages_list.layoutManager as LinearLayoutManager
+ val lastVisibleItemPosition = layoutManager.findLastCompletelyVisibleItemPosition()
+ val isCloseToBottom = lastVisibleItemPosition >= getOrCreateThreadAdapter().itemCount - SCROLL_TO_BOTTOM_FAB_LIMIT
+ if (isCloseToBottom) {
+ scroll_to_bottom_fab.hide()
+ } else {
+ scroll_to_bottom_fab.show()
+ }
+ }
+ })
+ }
+
private fun handleItemClick(any: Any) {
when {
any is Message && any.isScheduled -> showScheduledMessageInfo(any)
@@ -534,6 +553,7 @@ class ThreadActivity : SimpleActivity() {
private fun setupButtons() {
updateTextColors(thread_holder)
val textColor = getProperTextColor()
+ val backgroundColor = getProperBackgroundColor()
thread_send_message.apply {
setTextColor(textColor)
compoundDrawables.forEach {
@@ -637,6 +657,11 @@ class ThreadActivity : SimpleActivity() {
addAttachment(it)
}
}
+ scroll_to_bottom_fab.setOnClickListener {
+ scrollToBottom()
+ }
+ scroll_to_bottom_fab.hide()
+ scroll_to_bottom_fab.setColors(textColor, backgroundColor, backgroundColor)
setupScheduleSendUi()
}
diff --git a/app/src/main/res/layout/activity_thread.xml b/app/src/main/res/layout/activity_thread.xml
index fcc3fb2d..b8b957f6 100644
--- a/app/src/main/res/layout/activity_thread.xml
+++ b/app/src/main/res/layout/activity_thread.xml
@@ -121,6 +121,17 @@
+
+