美文网首页
Xamarin.Forms怎么在Android更改Toolbar

Xamarin.Forms怎么在Android更改Toolbar

作者: smallqiang | 来源:发表于2018-12-12 10:54 被阅读35次

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

    问题得以解决

    相关文章

      网友评论

          本文标题:Xamarin.Forms怎么在Android更改Toolbar

          本文链接:https://www.haomeiwen.com/subject/pxjuhqtx.html