'com.google.android.material:material:1.12.0'
< /code>
и < /p>
'androidx.appcompat:appcompat:1.7.0'
< /code>
У меня есть фрагмент, который содержит представление переработчика. When I select an item (long press) in the RecyclerView I enter ActionMode and show a different toolbar with actions specific to the chosen item(s)
I encountered an issue in Android 15, that when the app enters ActionMode, the status bar changes color from my expected blue to black
So I looked up various solutions here on SO for changing the status bar color in Android 15, and tried to реализовать их. Мое решение - что -то вроде этого: < /p>
override fun onCreateActionMode(
mode: ActionMode?, menu: Menu?
): Boolean {
val inflater: MenuInflater = mode?.menuInflater ?: return true
inflater.inflate(R.menu.multi_selection_menu, menu)
multiSelectionMenu = menu
// Deactivate PullToRefresh
setPullToRefreshActivation(false)
// some other buttons hid...
val color = getColor(R.color.bar_background)
setStatusBarColor(color, true)
return true
}
override fun onDestroyActionMode(mode: ActionMode?) {
// Activate PullToRefresh
setPullToRefreshActivation(true)
// Show hidden buttons...
// finished multi selection
detectedTagsAdapter.apply {
disableMultiSelect()
clearSelectedItems()
notifyDataSetChanged()
}
val color = getColor(R.color.bar_background)
setStatusBarColor(color, false)
}
private fun setStatusBarColor(color: Int, on: Boolean) {
val window = requireActivity().window
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
window.decorView.setOnApplyWindowInsetsListener { view, insets ->
val statusBarInsets = insets.getInsets(WindowInsets.Type.statusBars())
view.setBackgroundColor(color)
// Adjust padding to avoid overlap
if (on) {
// view.setPadding(0, statusBarInsets.top, 0, 0)
} else {
view.setPadding(0, 0, 0, 0)
}
// insets.consumeSystemWindowInsets() // makes both bars appear
insets.consumeStableInsets() //leaves a black bar
}
} else {
window.statusBarColor = color
}
}
< /code>
so - я возился с этим, чтобы попытаться заставить его работать.
Если вы видите закомментированные строки в функции settatusbarcolor < /code> Это в основном суммирует, где у меня есть: < /p>
[*] Если у меня нет этой функции, а затем в word 15 -lepress at of the intronge of the intorple -lepror -stortain the Introbrar). ActionBar
[*] Если я не вызову каких -либо функций потребляемой (поэтому последняя строка в SetOnApplyWindowisetsListener просто вставлен
), то аналогично, в панели состояния черная - но TooloBar изменяется в ActionBar
[*] Аналогично, если я использую insets.consumestableInseNSets ()
Я использую < /p> [code]'com.google.android.material:material:1.12.0' < /code> и < /p> 'androidx.appcompat:appcompat:1.7.0' < /code> У меня есть фрагмент, который содержит представление переработчика. When I select an item (long press) in the RecyclerView I enter ActionMode and show a different toolbar with actions specific to the chosen item(s) I encountered an issue in Android 15, that when the app enters ActionMode, the status bar changes color from my expected blue to black So I looked up various solutions here on SO for changing the status bar color in Android 15, and tried to реализовать их. Мое решение - что -то вроде этого: < /p> override fun onCreateActionMode( mode: ActionMode?, menu: Menu? ): Boolean { val inflater: MenuInflater = mode?.menuInflater ?: return true inflater.inflate(R.menu.multi_selection_menu, menu) multiSelectionMenu = menu // Deactivate PullToRefresh setPullToRefreshActivation(false) // some other buttons hid... val color = getColor(R.color.bar_background) setStatusBarColor(color, true) return true }
override fun onDestroyActionMode(mode: ActionMode?) { // Activate PullToRefresh setPullToRefreshActivation(true) // Show hidden buttons... // finished multi selection detectedTagsAdapter.apply { disableMultiSelect() clearSelectedItems() notifyDataSetChanged() }
val color = getColor(R.color.bar_background) setStatusBarColor(color, false) }
private fun setStatusBarColor(color: Int, on: Boolean) { val window = requireActivity().window if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) { window.decorView.setOnApplyWindowInsetsListener { view, insets -> val statusBarInsets = insets.getInsets(WindowInsets.Type.statusBars()) view.setBackgroundColor(color)
// insets.consumeSystemWindowInsets() // makes both bars appear insets.consumeStableInsets() //leaves a black bar } } else { window.statusBarColor = color } } < /code> so - я возился с этим, чтобы попытаться заставить его работать. Если вы видите закомментированные строки в функции settatusbarcolor < /code> Это в основном суммирует, где у меня есть: < /p>
[*] Если у меня нет этой функции, а затем в word 15 -lepress at of the intronge of the intorple -lepror -stortain the Introbrar). ActionBar [*] Если я не вызову каких -либо функций потребляемой (поэтому последняя строка в SetOnApplyWindowisetsListener просто вставлен [/code]), то аналогично, в панели состояния черная - но TooloBar изменяется в ActionBar [*] Аналогично, если я использую insets.consumestableInseNSets ()
Я использую фрагмент , где я запускаю ActionMode (контекстуальная строка действий)[! ]
actionMode = (requireActivity() as AppCompatActivity).startSupportActionMode(object : ActionMode.Callback {
override fun onCreateActionMode(mode: ActionMode,...
Я использую фрагмент , где я запускаю ActionMode (контекстуальная строка действий) private fun startActionMode() {
actionMode = (requireActivity() as AppCompatActivity).startSupportActionMode(object : ActionMode.Callback {
override fun...
Я делаю приложение для Android, где у меня есть материал 3 Clarpsing Wachar, который меняет цвет при прокрутке вниз. Я пробовал настройку приложения: StatusBarscrim , но оно ничего не делает, строка состояния остается одним и тем же цветом.
Я не...