Xamarin.Forms怎么在Android更改Toolbar

2018-12-12  本文已影响35人  smallqiang

今天有朋友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>

问题得以解决

上一篇下一篇

猜你喜欢

热点阅读