web-dev-qa-db-fra.com

contenu de l'application va derrière la barre de navigation dans Android L

enter image description here

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.

22
nitesh goel

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

5
Farhan

C’est si simple, Il suffit d’ajouter cette ligne à votre layout parent XML

Android:fitsSystemWindows="true"

2
matin ashtiani

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));
1
Digvesh

Définir softInputMode of popupWindow sur SOFT_INPUT_ADJUST_RESIZE résout le problème.

0
Shilpi

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.

0
Morteza Rastgoo