BottomNavigationBarXF 自动隐藏

目前,BottomNavigationBarXF 好像不支持 CoordinatorLayout 布局(BottomNavigationBar是支持的)。可以用以下比较迂回的方法实现BottomBar的自动隐藏:

1、Touch响应。

以自定义WebView为例:

在HybridWebViewRenderer中添加方法:

//...
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
        {
            base.OnElementChanged(e);

            if (Control == null)
            {
                //...
            }
//...
            Control.Touch += Control_Touch;
//...
      }
        float _startEventY;
        float _heightChange;
        private void Control_Touch(object sender, TouchEventArgs e)
        {
            var ev = e.Event;
            MotionEventActions action = ev.Action & MotionEventActions.Mask;
            switch (action)
            {
                case MotionEventActions.Down:
                    _startEventY = ev.GetY();
                    _heightChange = 0;
                    break;
                case MotionEventActions.Move:
                    float delta = (ev.GetY() + _heightChange) - _startEventY;
                    Element.TouchScroll(delta);
                    /*
                    var callDialog = new AlertDialog.Builder((Activity)Forms.Context);
                    callDialog.SetMessage(String.Format("scrolling delta is {0}, change {1}, start {2}", delta, _heightChange, _startEventY));
                    callDialog.SetNegativeButton("Cancel", delegate { });
                    callDialog.Show();
                    */
                    break;
            }
            e.Handled = false;
        }//...

在HybridWebViewPage中:

  //...
       public HybridWebViewPage(Uri uri)
        {
            InitializeComponent();
            //...
            hybridWebView.TouchScroll += WebViewPage_TouchScroll;
        }
        //...
        private void WebViewPage_TouchScroll(float moved)
        {
            if (moved < -60)
            {
                App.tabbedPage.BarHide?.Invoke(true);
            }
            else if (moved > 60)
            {
                App.tabbedPage.BarHide?.Invoke(false);
            }
        }
  //...

2、添加BarHide属性:

BottomBarPage中添加BarHide:

    public class BottomBarPage : TabbedPage
    {
        public enum BarThemeTypes { Light, DarkWithAlpha, DarkWithoutAlpha }

        public bool FixedMode { get; set; }

        public BarThemeTypes BarTheme { get; set; }
        /**/
        public static BindableProperty BarHideProperty = BindableProperty.Create(nameof(BarHide), typeof(Action<bool>), typeof(BottomBarPage), null, BindingMode.OneWayToSource);
        public Action<bool> BarHide
        {
            get { return (Action<bool>)GetValue(BarHideProperty); }
            set { SetValue(BarHideProperty, value); }
        }
        public void RaiseCurrentPageChanged()
        {
            OnCurrentPageChanged();
        }
    }

BottomBarPageRenderer中:

        protected override void OnElementChanged(ElementChangedEventArgs<BottomBarPage> e)
        {
            base.OnElementChanged(e);
            if (e.NewElement != null)
            {
//...
                Element.BarHide = (isHide) =>
                {
                    if (isHide)
                    {
                        _bottomBar.Hide(false);
                    }
                    else
                    {
                        _bottomBar.Show(false);
                    }
                };
//...
                _bottomBar.BarDidHide = (sender, evts) => {
                    _bottomBar.TranslationY = 0;
                };
//...
            }
        }
时间: 2024-11-05 05:49:15

BottomNavigationBarXF 自动隐藏的相关文章

页面跳转 和虚拟键盘的自动隐藏

前提:起码要有两个视图控制器. 注意事项: 设置跳转的动画效果 UITextField输入时,虚拟键盘的位置设置(整体布局向上移动,虚拟键盘的自动隐藏) 实现的功能: A:在第一个页面跳转到第二个页面,然后第二个页面点击按钮,进行返回 B:在第一个页面有一个text控件,点击一个按钮,传递到第二个页面,然后显示到第二个 页面的label上面: 效果展示: 步骤: 1.新建两个类,然后勾选xib,在AppDelegate的实现文件把其中的一个视图加载进去 //新建一个视图控制器 MainViewC

[菜鸟成长记]iOS开发自学笔记07-UITextField自动隐藏键盘

点击UITextField输入框后,软键盘默认情况下在结束输入后不会自动隐藏,目前总结了两种可以自动隐藏软键盘的方法: 第一种:通过响应UITextField对象的Did End On Exit事件,当点击默认软键盘的"Done"按钮或"Return"按钮会触发Did End On Exit 事件,通过编码实现来响应Did End On Exit事件来实现自动隐藏键盘 - (IBAction)TextFieldDidEndOnExit:(id)sender { [t

Jquery UI - DatePicker 在Dialog中无法自动隐藏的解决思路

通过Jquery UI Dialog模态展示如下的一个员工编辑页面,但是遇到一个奇怪的问题:点击Start Date的input元素后,其无法失去焦点.从而导致DatePicker控件在选择日期后无法自动隐藏. 解决思路:给DatePicker加上onSelect事件,在该事件中让Start Date的input元素的父元素获取焦点,这样DatePicker控件在选择日期后就自动隐藏.

关于C# 窗体自动隐藏和加载的问题

最近在写一个小项目,开发一个小程序配合其他软件使用,其中一款软件在使用工作时需要截图生成报告,此时不能有其他应用程式界面在显示器桌面显示,故需要自动隐藏和加载窗体,通过阅读Windows API实现了这一功能与大伙分享交流一下:原本C#自带Hide()和Show()方法:但是在项目开发时将窗体定义为静态类型:故无法通过this关键字来调用其对应的隐藏和显示窗体方法.这里通过Windows API提供的函数来实现,首先要获取当前运行窗体的句柄,方法如下: 定义一个全局变量 IntPtr Handl

滑动ListView自动隐藏页面头部和底部元素的例子

完整工程代码在这:https://github.com/NashLegend/Auto-Hide-ListView 现在很多软件都有这种滑动列表的时候自动隐藏页面头部和底部元素的功能,比如Google+.在刚刚进入Activity的时候,页面是一个列表,底部有一个view,头部一个view,当列表向上滑动的时候,隐藏头尾元素,以显示更多内容,当列表向下滑动的时候,再将头尾元素拉出来.比如Google+. 刚刚进入时是这个样子: 再把列表身上一拉,头尾隐藏,成了这个样子: 再往下拉,就会再变回第一

c# winform 中的 工具栏自动隐藏 splitter用法 带源码

代码下载地址 http://download.csdn.net/detail/simadi/7649313 c# winform 中的 工具栏自动隐藏 splitter用法 带源码,布布扣,bubuko.com

IOS中键盘自动隐藏

前言 很多时候当我们在一个文本框中输入信息后,按了确认或者返回键需要隐藏键盘,或者在其他空白区域点击屏幕后也需要隐藏屏幕. 这时肯定就需要让相应的控件响应Tap事件(点击事件),这样我们才能处理. 实现隐藏的两种方法 在IOS中有一个概念叫First Responder,意指第一响应者,也就是当前屏幕上,处于焦点状态的控件,它是第一响应者,我们在界面的触摸的各种手势都是由这个控件接收的.那么很好理解,当用户点击一个输入框之后,弹出输入键盘,此时这个文本输入框便是第一响应者,那现在要隐藏键盘,其实

iOSPush自动隐藏tabbar

紧接着上次的话题,还是自动隐藏tabbar,有反馈说太复杂,那这次就来个更简单的,只需要在UITabBarController添加控制器的时候调用YZNav就可以了,就可以实现tabbar的自动隐藏了. 直接上github地址:https://github.com/YouZhiZheShiJingCheng/YZ_nav 源码里面有说明哦.非常简单.

css中要求文字必须是一行,超出部分自动隐藏的问题

问题:客户要求文字必须是一行,超出部分自动隐藏.而现在没有办法在php里控制截取字数,只能在前端css里处理. 首页div的宽度是一定的. 处理办法为: word-break: keep-all;/*这个可以不要*/ word-wrap: break-word; white-space: nowrap;<span style="color: rgb(85, 85, 85); font-family: 微软雅黑, PMingLiU, Verdana, Arial, Helvetica, sa