Code: Select all
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d(Const.TAG_ACTIVITY, String.format("%s BaseActivity onCreate()", this.javaClass.simpleName))
enableEdgeToEdge()
initBinding()
onActivityCreate(savedInstanceState)
observeLiveData()
}
Code: Select all
override fun onActivityCreate(savedInstanceState: Bundle?) {
InsetsManager.applyBottomNavigationViewInsets(bind.bottomNavContainer)
InsetsManager.applyTutorialInsets(bind.tutorial, bind.promotionsTutorial)
}
Code: Select all
object InsetsManager {
fun applyBottomNavigationViewInsets(bottomContainerView: ViewGroup) {
ViewCompat.setOnApplyWindowInsetsListener(bottomContainerView) { v, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(insets.left, insets.top, insets.right, insets.bottom)
WindowInsetsCompat.CONSUMED
}
}
fun applyTutorialInsets(view: MainPageTutorialView, promotionsTutorial: PromotionsPageTutorialView) {
ViewCompat.setOnApplyWindowInsetsListener(view) { _, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
view.insetsTop = insets.top.toFloat()
view.insetsLeft = insets.left.toFloat()
view.insetsRight = insets.right.toFloat()
view.insetsBottom = insets.bottom.toFloat()
promotionsTutorial.insetsTop = insets.top.toFloat()
promotionsTutorial.insetsBottom = insets.bottom.toFloat()
WindowInsetsCompat.CONSUMED
}
}
Dann wird die Aktivität wie erwartet neu erstellt und ihr gesamter Status einschließlich Fragmenten wiederhergestellt, aber Edge-to-Edge wird nicht erneut angewendet und die setOnApplyInsetsListeners wurden nicht aufgerufen
Was ich bereits überprüft habe:
- wird vor setContentView() aufgerufen
Code: Select all
enableEdgeToEdge()
- setOnApplyWindowInsetsListener wird in onCreate() nach setContentView() aufgerufen
- EnableEdgeToEdge() aufgerufen in onStart, onResume ( nicht work)
- ConfigChanges="uiMode" aktiviert und enableEdgeToEdge() innerhalb von onConfigurationChanged() aufgerufen und recreate() manuell aufgerufen (hat nicht funktioniert)
- Ich hatte einen launchMode="singleTop" in meiner AndroidManifest.xml und habe versucht, ihn zu entfernen (hat nicht funktioniert). Arbeit)
Hier sind einige Beispiele.
Dunkelmodus aktiviert (
Code: Select all
AppCompatDelegate.MODE_NIGHT_YES

Lichtmodus aktiviert (
Code: Select all
AppCompatDelegate.MODE_NIGHT_NO
(Achten Sie nicht auf die Sache mit der isAppearanceLightStatusBar, ich werde das später beheben)
