So ändern Sie die Statusleistenfarbe in Android 15 während des ActionModeAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 So ändern Sie die Statusleistenfarbe in Android 15 während des ActionMode

Post by Anonymous »

Ich verwende < /p>

Code: Select all

'com.google.android.material:material:1.12.0'
< /code>
und < /p>
'androidx.appcompat:appcompat:1.7.0'
< /code>
Ich habe ein Fragment, das eine Recycler -Ansicht enthält. Wenn ich in der Recyclerview ein Element (Long Press) auswähle, fasse ich ActionMode ein und zeige eine andere Symbolleiste mit Aktionen, die für die ausgewählten Elemente spezifisch sind. versuchte sie implementieren. Meine Lösung ist ungefähr so: < /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>
Also - ich habe daran gebastelt, um zu versuchen, es funktioniert. Änderungen an der ActionBar 
[*] Wenn ich keine der Konsumfunktionen nenne (daher die letzte Zeile in der SetonApplyWindowisetslistener ist nur ein Einschusses 
, dann wird der Statusleiste in ähnlicher Weise schwarz - aber die Toolobar -Änderungen an der ActionBar
[*] ähnlich, wenn ich immer noch in den STUGS -STATURS -STATURS -STUGS -STUG -STUG -STUG -STUG -STUDAL () (). Bar
Wenn ich Einsätze verwende. In der StatusBarinserts Top -Polsterung hält die Statusleiste ihre Farbe (Hurra!), Aber jetzt sehe ich sowohl die Actionleiste als auch dann die ursprüngliche Symbolleiste (die von der Actionleiste abgelöst werden sollte. Es funktioniert gut in Android 14 und unten.
Jede Hilfe würde geschätzt werden.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post