Как получить высоту панели навигации в Android Xamarin? - PullRequest
0 голосов
/ 15 ноября 2018

как получить верхнюю панель навигации Высота в Xamarin Android? ниже код Java

public static int getSceenHeight(Activity activity) {
   //obsolete now
    return activity.getWindowManager().getDefaultDisplay().getHeight()+getNavigationBarHeight(activity);
}

 public static int getNavigationBarHeight(Activity activity) {
    if (!isNavigationBarShow(activity)){
        return 0;
    }
    Resources resources = activity.getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height",
            "dimen", "android");
    int height = resources.getDimensionPixelSize(resourceId);
    return height;
}

public static boolean isNavigationBarShow(Activity activity){

        Display display = activity.getWindowManager().getDefaultDisplay();
        Point size = new Point();
        Point realSize = new Point();
        display.getSize(size);
        display.getRealSize(realSize);
        return realSize.y!=size.y;

    }
}

как применить это в Xamarin Android?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Метод получения строки состояния (верхняя строка, отображающая сигнал, батарею и т. Д., Как вы сказали)

private int getStatusBarHeight()
{
    Resources res = this.Resources;
    int resourceId = res.GetIdentifier("status_bar_height", "dimen", "android");
    int height = res.GetDimensionPixelSize(resourceId);
    return height;
}

The method to get navigation bar
        private int getNavigationBarHeight()
{
            Resources res = this.Resources;
            int resourceId = res.GetIdentifier("navigation_bar_height", "dimen", "android");
            int height = res.GetDimensionPixelSize(resourceId);
            return height;
}
0 голосов
/ 16 ноября 2018

Понятия не имею, как ты собираешься его использовать, как ты сказал, я перевел над тобой методы в C #

public static int getSceenHeight(Activity activity)
{
    //obsolete now
    return activity.WindowManager.DefaultDisplay.Height + getNavigationBarHeight(activity);
}

public static int getNavigationBarHeight(Activity activity)
{
    if (!isNavigationBarShow(activity))
    {
        return 0;
    }
    Resources resources = activity.Resources;
    int resourceId = resources.GetIdentifier("navigation_bar_height",
            "dimen", "android");
    int height = resources.GetDimensionPixelSize(resourceId);
    return height;
}

public static bool isNavigationBarShow(Activity activity)
{
    if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.JellyBeanMr1)
    {
        Display display = activity.WindowManager.DefaultDisplay;
        Point size = new Point();
        Point realSize = new Point();
        display.GetSize(size);
        display.GetRealSize(realSize);
        return realSize.Y != size.Y;
    }
    else
    {
        bool menu = ViewConfiguration.Get(activity).HasPermanentMenuKey;
        bool back = KeyCharacterMap.DeviceHasKey(Keycode.Back);
        if (menu || back)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}
...