Fix list scrolling on quad-state dialog (#5602)

This commit is contained in:
Ivan Iskandar
2021-07-24 23:14:46 +07:00
committed by GitHub
parent 649209890d
commit 00ac632d8f
4 changed files with 70 additions and 10 deletions

View File

@ -243,8 +243,8 @@ class SettingsDownloadController : SettingsController() {
return MaterialAlertDialogBuilder(activity!!)
.setTitle(R.string.categories)
.setMessage(R.string.pref_download_new_categories_details)
.setQuadStateMultiChoiceItems(
message = R.string.pref_download_new_categories_details,
items = items,
initialSelected = selected
) { selections ->

View File

@ -355,8 +355,11 @@ class SettingsLibraryController : SettingsController() {
return MaterialAlertDialogBuilder(activity!!)
.setTitle(R.string.categories)
.setMessage(R.string.pref_library_update_categories_details)
.setQuadStateMultiChoiceItems(items = items, initialSelected = selected) { selections ->
.setQuadStateMultiChoiceItems(
message = R.string.pref_library_update_categories_details,
items = items,
initialSelected = selected
) { selections ->
selected = selections
}
.setPositiveButton(android.R.string.ok) { _, _ ->

View File

@ -3,7 +3,9 @@ package eu.kanade.tachiyomi.widget.materialdialogs
import android.view.LayoutInflater
import android.view.inputmethod.InputMethodManager
import android.widget.TextView
import androidx.annotation.StringRes
import androidx.core.content.getSystemService
import androidx.core.view.isVisible
import androidx.core.widget.doAfterTextChanged
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
@ -36,6 +38,7 @@ fun MaterialAlertDialogBuilder.setTextInput(
* @see eu.kanade.tachiyomi.widget.materialdialogs.QuadStateTextView
*/
fun MaterialAlertDialogBuilder.setQuadStateMultiChoiceItems(
@StringRes message: Int? = null,
items: List<CharSequence>,
initialSelected: IntArray,
disabledIndices: IntArray? = null,
@ -49,6 +52,20 @@ fun MaterialAlertDialogBuilder.setQuadStateMultiChoiceItems(
initialSelected = initialSelected,
listener = selection
)
setView(binding.root)
return this
val updateScrollIndicators = {
binding.scrollIndicatorUp.isVisible = binding.list.canScrollVertically(-1)
binding.scrollIndicatorDown.isVisible = binding.list.canScrollVertically(1)
}
binding.list.setOnScrollChangeListener { _, _, _, _, _ ->
updateScrollIndicators()
}
binding.list.post {
updateScrollIndicators()
}
if (message != null) {
binding.message.setText(message)
binding.message.isVisible = true
}
return setView(binding.root)
}