Как изменить цвет панели состояния в Android 15 во время ActionModeAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Как изменить цвет панели состояния в Android 15 во время ActionMode

Сообщение Гость »

Я использую < /p>

Код: Выделить всё

'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 ()

Подробнее здесь: https://stackoverflow.com/questions/793 ... actionmode
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»