SpecialCyCi / AndroidResideMenu

The idea of ResideMenu is from Dribbble 1 and 2. It has come true and run in iOS devices. iOS ResideMenu This project is the RefsideMenu Android version. The visual effect is partly referred to iOS version of ResideMenu. And thanks to the authors for the above idea and contribution.
MIT License
2.85k stars 1.1k forks source link

screen goes below the bottom bar in ResideMenu,Needed Urgent #113

Open rakesh-shah opened 7 years ago

rakesh-shah commented 7 years ago

i have tried many ways it's not working it's creating problem only in port mode i am sending the image screenshot_20161120-233004 please check on the image, m waiting for the solution

niteshsirohi1 commented 7 years ago

Make these changes in ResideMenu class

     @Override
   protected boolean fitSystemWindows(Rect insets) {
    // Applies the content insets to the view's padding, consuming that
        // content (modifying the insets to be 0),
         // and returning true. This behavior is off by default and can be
     // enabled through setFitsSystemWindows(boolean)
     // in api14+ devices.
      Point appUsableSize = getAppUsableScreenSize(mContext);
      Point realScreenSize = getRealScreenSize(mContext);

     boolean hasBackKey=false;
     // navigation bar at the bottom
        if (appUsableSize.y < realScreenSize.y) {
        hasBackKey=true;
      }
         // This is added to fix soft navigationBar's overlapping to content above LOLLIPOP
          int bottomPadding = viewActivity.getPaddingBottom() + insets.bottom;

           if (hasBackKey ) {//there's a navigation bar
          bottomPadding += getNavigationBarHeight();
         }

          this.setPadding(viewActivity.getPaddingLeft() + insets.left,
    viewActivity.getPaddingTop() + insets.top,
    viewActivity.getPaddingRight() + insets.right,
    bottomPadding);
        insets.left = insets.top = insets.right = insets.bottom = 0;
         return true;
     }

And these methods

         public static 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 static 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;
     }
mani516 commented 5 years ago

You can refer my solution here. It works with gesture navigations also https://github.com/SpecialCyCi/AndroidResideMenu/issues/121#issuecomment-460137552