Android ResideMenu biblioteca, parte inferior del fragmento tiene problema de recorte

Https://www.dropbox.com/s/lykyutdlo6386il/nexus%205%202.png?dl=0

Esta imagen es capturada por Nexus 5. Como se puede ver la diferencia entre la parte superior e inferior de la pantalla es diferente. El logotipo de Android se recorta cuando se cierra el menú lateral. Parte de la pantalla inferior se oculta debajo de la barra de navegación nativa.

Https://www.dropbox.com/s/wcwuat1bwoqa26v/correct1.png?dl=0

Por otro lado, esta imagen es capturada por la galaxia s5 mini. Puede notar que la diferencia entre arriba y abajo de la pantalla es la misma cantidad. No hay problema en absoluto.

Es la misma biblioteca de ResideMenu con diferentes dispositivos y sistema operativo Android (lollipop y kitkat). Miro los diseños (residemenu.xml) para encontrar algo malo; Pero todo me parece correcto. No pude encontrar ninguna solución a este problema. ¿Hay alguna manera de corregir correctamente el fragmento principal (el mismo margen desde arriba y abajo)? Por favor, ayúdame.

Enlace a la biblioteca: github.com/SpecialCyCi/AndroidResideMenu

Editar:

Este es el tema que estoy hablando con su solución.

3 Solutions collect form web for “Android ResideMenu biblioteca, parte inferior del fragmento tiene problema de recorte”

Resolví este problema editando un método "ResideMenu.java" en la biblioteca de ResideMenu.

Hice algunos cambios en un método llamado "fitSystemWindows"

Antes de hacer cambios:

@Override protected boolean fitSystemWindows(Rect insets) { this.setPadding(viewActivity.getPaddingLeft() + insets.left, viewActivity.getPaddingTop() + insets.top, viewActivity.getPaddingRight() + insets.right, viewActivity.getPaddingBottom() + insets.bottom); insets.left = insets.top = insets.right = insets.bottom = 0; return true; } 

Después de hacer cambios:

 @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; } 

Este cambio soluciona mi problema, parte de la pantalla inferior oculta debajo de la barra de navegación nativa.

Espero que esta solución sea útil a cualquier persona que encuentre este tipo de problema. Aclamaciones.

Encontrado Solución más estable

  public Point getNavigationBarSize(Context context) { Point appUsableSize = getAppUsableScreenSize(context); Point realScreenSize = getRealScreenSize(context); // navigation bar on the right if (appUsableSize.x < realScreenSize.x) { return new Point(realScreenSize.x - appUsableSize.x, appUsableSize.y); } // navigation bar at the bottom if (appUsableSize.y < realScreenSize.y) { return new Point(appUsableSize.x, realScreenSize.y - appUsableSize.y); } // navigation bar is not present return new Point(); } public Point getAppUsableScreenSize(Context context) { WindowManager windowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); Point size = new Point(); display.getSize(size); return size; } public Point getRealScreenSize(Context context) { WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); Point size = new Point(); if (Build.VERSION.SDK_INT >= 17) { display.getRealSize(size); } else if (Build.VERSION.SDK_INT >= 14) { try { size.x = (Integer) Display.class.getMethod("getRawWidth").invoke(display); size.y = (Integer) Display.class.getMethod("getRawHeight").invoke(display); } catch (IllegalAccessException e) {} catch (InvocationTargetException e) {} catch (NoSuchMethodException e) {} } return size; } 

Y ajuste el relleno del diseño principal

 setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), getNavigationBarSize(getContext()).y); 

Editar: Guarde este código dentro del método attachToActivity () de ResideMenu.java

  if (getNavigationBarSize(getContext()).x > 0 && getNavigationBarSize(getContext()).y > 0) { this.postDelayed(new Runnable() { @Override public void run() { setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), getNavigationBarSize(getContext()).y); } }, 100); } 

Tuve este mismo problema y lo resolví mediante la edición de un método en la biblioteca ResideMenu.

Dentro de la biblioteca, puedes acceder a una clase java llamada "ResideMenu.java".

Edite el método como este.

  private void setScaleDirection(int direction){ int screenWidth = getScreenWidth(); float pivotX; float pivotY = getScreenHeight() * 0.5f; if (direction == DIRECTION_LEFT){ scrollViewMenu = scrollViewLeftMenu; pivotX = screenWidth * 2.2f; }else{ scrollViewMenu = scrollViewRightMenu; pivotX = screenWidth * -0.5f; } ViewHelper.setPivotX(viewActivity, pivotX); ViewHelper.setPivotY(viewActivity, pivotY); ViewHelper.setPivotX(imageViewShadow, pivotX); ViewHelper.setPivotY(imageViewShadow, pivotY); scaleDirection = direction; } 

Aquí he hecho cambios a

Pivot x = (screenWidth * 2.2f) en lugar de (screenWidth * 0.5f).

Intente administrar el valor del flotador, resolverá su problema.

Gracias, codificación feliz

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.