Xamarin.Forms怎么在Android更改Toolbar
今天有朋友QQ问我 如何调整 Toolbar 的 高度?
我们在使用Xamarin Forms 开发安卓的时候会发现 Toolbar的高度太高了,手机屏幕就那么点,工作栏大了操作区就小了。
大家可以看看微信的状态栏明显就调过,不是默认的AppCompat的大小,感觉这个高度刚刚好。
其实要说用户体验度还是国内做的好,国外那些APP给我一种感觉,UI设计就是一个烂字。
最初我刚开始入手Xamarin遇到这个问题第一反应就是CustomRender 设置高度用Layout 进行调整高度。
尝试过多种方式去 比如CustomRender之类的最后都没有办法
但事实上效果并不用这麽麻烦。翻看源码
https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs
最后查看源码发现 他是读取的style的值
源码如下:
int ActionBarHeight()
{
int attr = Resource.Attribute.actionBarSize;
int actionBarHeight;
using (var tv = new TypedValue())
{
actionBarHeight = 0;
if (Context.Theme.ResolveAttribute(attr, tv, true))
actionBarHeight = TypedValue.ComplexToDimensionPixelSize(
tv.Data, Resources.DisplayMetrics
);
} if (actionBarHeight <= 0)
return Device.Info.CurrentOrientation.IsPortrait()
? (int)Context.ToPixels(56)
: (int)Context.ToPixels(48);
if (((Activity)Context).Window.Attributes.Flags.HasFlag(
WindowManagerFlags.TranslucentStatus)
|| ((Activity)Context).Window.Attributes.Flags.HasFlag(
WindowManagerFlags.TranslucentNavigation))
{
if (_toolbar.PaddingTop == 0)
_toolbar.SetPadding(0, GetStatusBarHeight(), 0, 0);
return actionBarHeight + GetStatusBarHeight();
}
return actionBarHeight;
}
最后修改
<item name="actionBarSize">30dp</item>
问题得以解决