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
[*] ä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.>