diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java index ee24c2820..2c69fa1ba 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java @@ -20,6 +20,10 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.preference.PreferenceManager; @@ -101,6 +105,34 @@ protected void onCreate(final Bundle savedInstanceState) { setSupportActionBar(binding.toolbar); binding.toolbar.setOnClickListener((v) -> fragment.showEditTitleDialog()); + setImeInsets(); + } + + private void setImeInsets() { + final var window = getWindow(); + if (window == null) { + return; + } + + WindowCompat.setDecorFitsSystemWindows(window, false); + + final var decorView = window.getDecorView(); + ViewCompat.setOnApplyWindowInsetsListener(decorView, (v, insets) -> { + Insets imeInsets = insets.getInsets(WindowInsetsCompat.Type.ime()); + Insets navBarInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars()); + + // Apply bottom padding when keyboard is shown + int bottomPadding = Math.max(imeInsets.bottom, navBarInsets.bottom); + + v.setPadding( + v.getPaddingLeft(), + v.getPaddingTop(), + v.getPaddingRight(), + bottomPadding + ); + + return insets; + }); } @Override