我正在开展一个项目,我需要获取导航栏的高度。我使用以下方式获得整个屏幕高度:
Helpers.ApplicationContext.ScreenHeight = (int)Resources.DisplayMetrics.HeightPixels / Resources.DisplayMetrics.Density;
Helpers.ApplicationContext.ScreenWidth = (int)Resources.DisplayMetrics.WidthPixels / Resources.DisplayMetrics.Density;
但我无法获得导航栏高度。
任何人都可以提出建议来获取我页面的导航栏高度。
提前致谢。
答案 0 :(得分:1)
对于iOS这可能会对您有所帮助:
var navbarHeight = YourViewControllerInstance.NavigationController?.NavigationBar.Frame.Height;
对于Android:
TypedArray styledAttributes = this.Theme.ObtainStyledAttributes(
new int[] { Android.Resource.Attribute.ActionBarSize });
var actionbarHeight = (int) styledAttributes.GetDimension(0, 0);
styledAttributes.recycle();
上面的示例给出了Pixel中的高度。请在下面找到更精确的样本,它提供Pixel和DP的高度:
TypedValue tv = new TypedValue();
int actionBarHeightInPixel = 0;
int actionBarHeightInDP = 0;
DisplayMetrics metrics = Resources.DisplayMetrics;
if (Theme.ResolveAttribute(Resource.Attribute.actionBarSize, tv, true))
{
actionBarHeightInPixel = TypedValue.ComplexToDimensionPixelSize(tv.Data, metrics);
actionBarHeightInDP = actionBarHeightInPixel / (int)metrics.Density;
}