Comme vous pouvez le voir, mon bouton "Got It" se trouve derrière la barre de navigation. Impossible de le réparer !!! j'ai essayé
<item name="Android:fitsSystemWindows">true</item>
En plus de le définir dans un fichier de mise en page.
mon thème dans valeur-21 est:
<style name="AppTheme" parent="Android:Theme.Material.Light.NoActionBar">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowActionBar">false</item>
<item name="Android:windowFullscreen">false</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:fitsSystemWindows">true</item>
</style>
C'est la même chose avec tous les écrans de l'application.
S'il vous plaît aider.
Pour une expérience utilisateur agréable, vous ne devriez pas avoir besoin de bloquer la zone des touches de navigation en utilisant Android:windowTranslucentNavigation
voici plutôt la meilleure solution. Si vous utilisez la bibliothèque ResideMenu, ajoutez simplement cette méthode dans ResideMenu.Java.
@Override
protected boolean fitSystemWindows(Rect insets) {
int bottomPadding = insets.bottom;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "Android");
if (resourceId > 0) {
bottomPadding += resources.getDimensionPixelSize(resourceId);
}
}
this.setPadding(viewActivity.getPaddingLeft() + insets.left, viewActivity.getPaddingTop() + insets.top,
viewActivity.getPaddingRight() + insets.right, viewActivity.getPaddingBottom() + bottomPadding);
insets.left = insets.top = insets.right = insets.bottom = 0;
return true;
}
et si vous utilisez la bibliothèque SlidingMenu
, remplacez mod par SLIDING_CONTENT
par:
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
J'espère que cela vous fera gagner du temps
C’est si simple, Il suffit d’ajouter cette ligne à votre layout parent XML
Android:fitsSystemWindows="true"
Définissez simplement ceci dans onCreate () de votre activité lors de la configuration de la vue du contenu:
int mScreenWidth = getWindowManager().getDefaultDisplay().getWidth();
int mScreenHeight = getWindowManager().getDefaultDisplay().getHeight();
View view = getLayoutInflater().inflate(R.layout.activity_main, null);
setContentView(view, new ViewGroup.LayoutParams(mScreenWidth, mScreenHeight));
Définir softInputMode
of popupWindow
sur SOFT_INPUT_ADJUST_RESIZE
résout le problème.
Utilisez ce code dans votre méthode onCreate de votre Activity
(Si vous avez BaseActivity
, vous pouvez le faire ici pour que toutes les activités s'appliquent):
ViewCompat.setOnApplyWindowInsetsListener(
findViewById(Android.R.id.content), (v, insets) -> {
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
params.bottomMargin = insets.getSystemWindowInsetBottom();
return insets.consumeSystemWindowInsets();
});
Quand une mise en page a cet indicateur, cela signifie que cette mise en page demande au système d’appliquer des incrustations de fenêtre. Dans notre cas, cela voudrait dire que FrameLayout souhaite appliquer un remplissage égal à la hauteur de la barre d’état.