barriers / 阅读 / 详情

ios9 navigationbar的高度是44还是64

2023-07-18 04:33:06
共1条回复
clou

UINavigationBar的高度在苹果官方的SDK中是固定的44个点,但是实际项目中我们却有可能遇到这样的情况,如下图:

这样的一个UINavigationBar的高度达到了84个点,这就需要我们自定义系统自带的UINavigationBar的高度,但是系统并没有直截了当的方法来调整这个NavigationBar的Height,于是我进行了以下的尝试。

在需要进行调整的那个ViewController类的ViewWillApplear这个方法对 self.navigationController.navigationBar的frame进行赋值,其中frame.size.height变为我 们需要的新高度(本例中为84),然后在ViewWillDisappear这个方法中将frame再改回去就可以了。

注:这里将代码写在ViewWillAppear/DisAppear里面的原因是根据这个自定义高度UINavigationBar只在某一 个界面出现,如果你所有的UINavigationBar的高度是统一的,那么就没必要这么写,只需要写在第一次出现的ViewController的 ViewDidLoad消息里面就可以了。

代码如下:

1

2

3

4

5

6

7

8

9

10

11

- ( void ) viewWillAppear : ( BOOL ) animated {

[ super viewWillAppear :animated ] ;

CGRect rect = self . navigationController . navigationBar . frame ;

self . navigationController . navigationBar . frame = CGRectMake ( rect . origin . x , rect . origin . y , rect . size . width , 84 ) ;

}

- ( void ) viewWillDisappear : ( BOOL ) animated {

[ super viewWillDisappear :animated ] ;

CGRect rect = self . navigationController . navigationBar . frame ;

self . navigationController . navigationBar . frame = CGRectMake ( rect . origin . x , rect . origin . y , rect . size . width , 44 ) ;

}

OK,运行!UINavigationBar的高度正确地发生变化,事情就这么愉快地解决了!等等,导航栏上的标题和返回按钮的位置却都贴到最下面了,如下图:

为什么会是这样?发生了什么?我也不知道!但是现在很明显就是需要我们去调整这两个“UIView”的frame,把他们向上移动40个点,为之后要添加的其他控件留出空间。很简单,对吧?

然后,数个小时过去后……

我靠,这些货特么根本不是UIView嘛!

返回按钮是UIBarButtonItem,继承自UIBarItem,UIBarItem继承自NSObject,标题这个就更悲剧了,如果 你默认使用ViewController的title属性做为标题(本例就是),那么self.navigationItem.titleView这个值 为nil,更改nil的frame什么事情也不会发生。

这期间我试过各种非正常手段去找到他们,包括遍历UINavigationBar的view hierarchy(视图层级),试图使用UIBarButtonItem的私有变量,尝试修改UIBarButtonItem的 CustomView.frame等……都无功而返。

然后开始上Google搜索,StackOverflow一片找,SO上果然大神云集,问题的解答也相当高大上。

答案基本上有2种:

1、不用系统的NavigationBar啦,咱们自定义一个就好啦,然后重载layoutSubView里面的怎样怎样云云。

2、这个简单,我写了个NavigationBar的分类(Category),里面加个什么消息xxx。

小菜我一看到自定义控件神马的立即就给外国大爷们跪了,Category什么的更是从来没用过……其实我只需要更改一下这两个控件的高度而已,用不用这么暴力?

于是我开始查文档,终于被我找到下面这两个消息:

UINavigationBar下:

- (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics

官方描述: Sets the title"s vertical position adjustment for given bar metrics. 调整某个BarMetrics(这个不知道怎么翻译)下标题的垂直位置。

UIBarButtonItem下:

- (void)setBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics

官方描述: Sets the background vertical position offset for given bar metrics.This offset is used to adjust the vertical centering of bordered bar buttons within the bar. 调整某个BarMetrics(这个不知道怎么翻译)下背景的垂直位置的偏差值,这个偏差值用来调整该圆角按钮的垂直中心在Bar内的位置。

OhMyGod,终于找到组织了!赶紧试一下,还是刚才的ViewController,在ViewWillAppear这个消息中再加上这么两句:

1

2

[ self . navigationController . navigationBar setTitleVerticalPositionAdjustment : - 40.0 forBarMetrics : UIBarMetricsDefault ] ;

[ self . navigationItem . leftBarButtonItem setBackgroundVerticalPositionAdjustment : - 40.0 forBarMetrics : UIBarMetricsDefault ] ;

注:这里使用leftBarButtonItem是因为我使用了自定义图片的返回按钮,这时leftBarButton就替代了backBarButton。

不要忘了在ViewWillDisappear的时候再把标题的位置调整回来,不然当标题就会跳到屏幕的最上方了;另一方面,返回按钮却不用设置了,这两行代码的作用机制不一样,返回按钮只和当前的ViewController有关:

1

[ self . navigationController . navigationBar setTitleVerticalPositionAdjustment : 0.0 forBarMetrics : UIBarMetricsDefault ] ;

运行结果:

太棒啦!终于成功了!标题和返回按钮的垂直位置按照我们设置的向上移动了40个点!

后面的事情就简单了,按照设计湿GG或者设计师MM的要求把相应的UI控件加到self.navigationController.navigationBar中,收工!

注:上述运行结果的前提是使用自定义图片的leftBarButtonItem作为返回按钮替代系统默认的 backBarButtonItem,并且你的leftBarButtonItem是使用 initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action这个方法创建的(原因我后面会讲)。换句话说,在你的ViewController或者它的父类的 ViewDidLoad方法里,应该有类似下面的两行代码:

1

2

UIBarButtonItem * item = [ [ UIBarButtonItem alloc ] initWithImage : [ UIImage imageNamed : @ “这里是你的某个图片名" ] style : UIBarButtonItemStyleBordered target : self action : @ selector ( 你的某个方法名 ) ] ;

self . navigationItem . leftBarButtonItem = item ;

如果你的需求刚好能用这个方法解决,那么恭喜你,因为小菜能拿出的干货就只有这么多了,后面的就全是困惑了……orz

做为一个iOS Level1的菜鸟,在费了好大的劲终于找到问题的解决方法之后,欣喜是肯定的,想得瑟一下是必然的,于是飘飘乎就想把相关的方法研究研究,搞个通用的解决方案出来。于是,噩梦开始了……

N多个小时过去了,毛个解决方案没搞出来,却搞出来了很多个问题……

问题1:系统默认的导航栏返回按钮垂直位置无法调节。

当返回按钮使用系统默认的backBarButtonItem的时候,使用UIBarButtonItem的- (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics来调整它的垂直位置,不起作用。

我进行了各种尝试,但是backBarButtonItem一直是nil,文档上说它会根据上一个ViewController的title属 性来创建这个按钮,但是我找不到这个时机来调整执行上面这个消息。更准确的问题可能是,下图中的这个消息到底应该怎么用才能看到效果呢?

问题2:自定义的返回按钮在导航栏中的垂直位置仅在某一种情况下可以调节。

后来我又发现,即使不用系统默认地返回按钮,使用自定义的leftBarButtonItem,也只在使用 initWithImage:style target:action:这个方法创建的UIBarButtonItem时生效,使用其他init方法情况一律无效。至于什么原因不明觉厉。

相关推荐

navigation是什么意思

计算机科学技术交通运输工程电子、通信与自动控制技术 等
2023-07-18 00:12:121

navigation是什么意思

navigation的意思是航行;导航;领航。导航是一个研究领域,重点是监测和控制工艺或车辆从一个地方移动到另一个地方的过程。导航领域包括四个一般类别:陆地导航、海洋导航、航空导航和空间导航。这也是用于导航员执行导航任务所使用的专业知识的艺术术语。所有导航技术都涉及定位与已知位置或模式相比较的导航仪的位置。在更广泛的意义上,导航可以指涉及确定位置和方向的任何技能或研究。在这个意义上,导航包括定向运动和行人导航。双语例句:1、Besides,they had technology and skill of navigation.此外,他们还有航海的工艺和技能。2、Why not let the spider after reading the navigation to see your updates?为什么不让蜘蛛在读完导航之后就看到你的更新呢?3、Navigation goes from one page to the next,not from one frame to the next,so links go to the next outer page.导航从一个页面进入下一页面,而不是从一框架到另一框架,因此链接进入下一个外部页面。
2023-07-18 00:12:571

navigation 英文

navigation 英文作名词时意为“航行;航海”。短语搭配:avigation light [航] [水运] 航行灯 ; 飞机夜航灯光 ; 航标灯。celestial navigation [水运] 天文导航 ; [水运] 天文航海。navigation chart [航] [水运] 导航图 ; 航行图 ; 海图。marine navigation 海上导航 ; 船舶导航 ; [水运] 航海 ; 航海导航。navigation computer [计] [航] [水运] 导航计算机。underwater navigation 水下导航 ; [水运] 水下航行。Navigation Message 导航电文 ; 导航信息Navigation Bars 导航条aerial navigation 航空导航 ; 空中航行。双语例句:Besides, they had technology and skill of navigation.此外,他们还有航海的工艺和技能。Why not let the spider after reading the navigation to see your updates?为什么不让蜘蛛在读完导航之后就看到你的更新呢?
2023-07-18 00:13:201

车子上navigation什么意思

n. 航行(学); 航海(术); 海上交通
2023-07-18 00:13:501

voyage 与navigation的区别是什么?

voyage n.航行, 航海; 航天It is a prosperous voyage to the ship.这是那艘船的一次成功的航行。navigation n.航行(学); 航海(术), 航空(术)Navigation is difficult on this river because of hidden rocks.由于多暗礁, 在这条河上航行很困难。导航, 领航The compass is an instrument of navigation.罗盘是导航仪器。两个都是名词,但是侧重点不同。后者偏向书面语的那种
2023-07-18 00:13:581

航海英语这两个有区别么

你是指什么区别?航海词典navigation:航行(学);航海(术);海上交通。词典voyage:旅程;旅行,航海,航空;远行。词典seafaring:航海的,水上的。词典navigate:驾驶;航行于;使通过。
2023-07-18 00:14:281

seo里的navigation是什么意思

应该是面包屑导航的意思吧
2023-07-18 00:14:376

CSS中的 #navigation是做什么的?

看一下这个小例子,应该明白了<style>#a{font-size:20px;}.b{font-size:20px;}</style><div>无样式</div><div id=a>id标识定义方法;id定义用 # 号声明</div><div class="b">类别定义方法;类别定义用 . 声明</a>
2023-07-18 00:15:033

仪表盘显示navigation什么意思

仪表盘显示navigation是 导航
2023-07-18 00:15:131

怎么打开word的navigation

单击功能区的“文件”选项卡,再点击“选项”,打开“Word选项”对话框。在打开的“Word选项”对话框中切换到“高级”选项卡,在“编辑选项”区域中勾选“启用‘即点即输"”复选框,并单击“确定”按钮。
2023-07-18 00:15:381

如何控制android系统中NavigationBar 的显示与隐藏

在让navigation bar 显示货隐藏前,需要判断是否存在navigationbar。public static boolean checkDeviceHasNavigationBar(Context activity) { //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar boolean hasMenuKey = ViewConfiguration.get(activity) .hasPermanentMenuKey(); boolean hasBackKey = KeyCharacterMap .deviceHasKey(KeyEvent.KEYCODE_BACK); if (!hasMenuKey && !hasBackKey) { // 做任何自己需要做的,这个设备有一个导航栏 return true; } return false; }安卓4.1之后为全虚拟键操作,和actionbar对应,底部的虚拟键菜单称为Navigation Bar。 myview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION),其中的myview 可以为Layout中任意的一个View对象(可以有findViewById得到)。
2023-07-18 00:16:012

飞歌导航开机显示navigation什么意思?

导航 navigation
2023-07-18 00:17:043

navigation错误代码1

huapiaoxiang21关注编译navigation包 遇到的问题 原创2018-11-13 14:40:02huapiaoxiang21 码龄6年关注错误1是 缺少了bfl包解决的方法如下:sudo apt-get install ros-kinetic-bfl错误2是 Could not find a package configuration file provided by "move_base_msgs" 解决的方法是 sudo apt-get install ros-kinetic-move-base-msgs错误3是SDL/SDL_image.h: 没有那个文件或目录解决的方法是: sudo apt-get install libsdl1.2-devsudo apt-get install libsdl-image1.2-devsudo apt-get install libsdl-mixer1.2-devsudo apt-get install libsdl-ttf2.0-devsudo apt-get install libsdl-gfx1.2-dev安装完成之后,在目录/usr/include中,就会有个SDL文件夹,里面包含了所需要的头文件。
2023-07-18 00:17:111

unity 怎么把navigation网格设置成动态的

选中上图三个Cube,并在Inspector面板中选中为静态(static)下拉选项的Navigation Static,如下图。3.依次选择菜单栏中的Windows - Navigation ,打开后面板如下。单击该面板右下角的Bake按钮,即可生成导航网格,下图为已生成的导航网格。4.下面就可以让一个运动体根据一个导航网格运动到目标位置。首先新建一个Cube为目标位置,起名TargetCube。然后创建一个capsule
2023-07-18 00:17:181

林肯navigation多少钱

林肯领航员:118-198万元  林肯MKC:34-49万元  林肯MKT:120万元  林肯MKZ:32-80万元  美国著名汽车企业福特公司旗下的一个豪华车品牌,创立于1917年,创始人为亨利·利兰。其品牌名称是以美国总统亚伯拉罕·林肯的名字命名。自1939年美国总统富兰克林·罗斯福以来,由于林肯车杰出的性能、典雅的造型和无与伦比的舒适一直被白宫选为总统专车。它最"出名"的一款车是肯尼迪总统乘用的检阅车。林肯品牌著名的产品有:MKC、MKZ、"大陆"(Continental)、"马克八世(MarkⅧ)、"城市"(TownCar)和"领航员" (Navigator)等在中国使用的林肯轿车多为"城市"系列。
2023-07-18 00:17:271

新人求助,关于unity自带的navigation自动寻路问题

注意:以下都是基于没有刚体的情况下 1、如果障碍物是不会移动的,那么请在bake时候连同地形一起bake,这样就会生成较好的navmesh 2、如果障碍物需要移动,那么请在障碍物上添加agent,并设置其大小,然后设置avoidancePriority,低优先级的将被高.
2023-07-18 00:17:341

ios 系统自带的navigation怎么改变返回按钮的颜色

我想设置Navigation Bar的背景颜色为黑色,然后所有内部颜色为白色.因此,我用了这段代码:1234567891011 [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], NSForegroundColorAttributeName, [UIFont fontWithName:@"Arial-Bold" size:0.0], NSFontAttributeName, nil]];但是,返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色仍然为默认颜色,怎么修改它们?解决方法 1:自从IOS7后UINavigationBar的一些属性的行为发生了变化.你可以在下图看到:现在,如果你要修改它们的颜色,用下面的代码:1234self.navigationController.navigationBar.barTintColor = [UIColor blackColor];self.navigationController.navigationBar.tintColor = [UIColor whiteColor];[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];self.navigationController.navigationBar.translucent = NO;
2023-07-18 00:17:411

Android L 判断是否有NavigationBar的方式

Android L中,如何得知是否有虚拟按键呢。查看了下PhoneWindowManager中的代码,这会在这整理处如下方法: 获取是否存在NavigationBar: private static boolean checkDeviceHasNavigationBar(Context context) { boolean hasNavigationBar = false; Resources rs = context.getResources(); int id = rs.getIdentifier("config_showNavigationBar", "bool", "android"); if (id > 0) { hasNavigationBar = rs.getBoolean(id); } try { Class systemPropertiesClass = Class.forName("android.os.SystemProperties"); Method m = systemPropertiesClass.getMethod("get", String.class); String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys"); if ("1".equals(navBarOverride)) { hasNavigationBar = false; } else if ("0".equals(navBarOverride)) { hasNavigationBar = true; } } catch (Exception e) { Log.w(TAG, e); }return hasNavigationBar; }获取NavigationBar的高度: private static int getNavigationBarHeight(Context context) { int navigationBarHeight = 0; Resources rs = context.getResources(); int id = rs.getIdentifier("navigation_bar_height", "dimen", "android"); if (id > 0 && checkDeviceHasNavigationBar(context)) { navigationBarHeight = rs.getDimensionPixelSize(id); } return navigationBarHeight; }
2023-07-18 00:18:041

navigation error是什么意思

navigation errorun.导航误差;导航设施例句1.The simulation result shows that the integrated navigation system can reduce navigation error when using the feedback calibration method.仿真结果表明:组合导航系统在反馈校正时能有效地抑制导航误差。2.Influence of Some Aircraft Navigation Error on Target Searching Field of CCD Aiming-Sabilizing System某型飞机导航误差对CCD稳瞄系统目标搜索域的影响3.Navigation algorithm is simulated and the navigation error is analysis.并对导航算法进行了仿真。对导航误差进行分析。4.and the pure inertial navigation guidance error is computed with the given IMU error coefficient deviations.对给定的惯组误差系数偏差进行了纯惯性导航制导误差计算。5.The Simulation Research of the Underwater Navigation Algorithm Error Based on GPS基于GPS的水下导航算法误差仿真研究
2023-07-18 00:18:211

ios 开发,怎么在push控制器的时候,把上面的navigation给隐藏掉

在push 控制器的-(void) viewWillAppear:(BOOL)animated 方法里面 设置self.navigationController.navigationBar.hidden = YES;
2023-07-18 00:18:313

iOS如何实现从一个navigation的子页面跳转到另一个navigation的子页面?

第一个子页面 自己添加按钮,通过触发self.navigationController pushViewController:VC animated:NO 方法来跳转至下一级页面(vc是 你要跳转到的页面的视图控制器,后面的参数代表是否使用默认的跳转动画)在第二级页面可以使用[self.navigationController popToRootViewControllerAnimated:YES]回到上一级页面
2023-07-18 00:18:382

unity3d,用了Navigation 自动寻路出了问题

nav.remainingDistance == 0可能是这句出的问题,就是人物到达目的地和你的目的地有误差,你可以试一下将nav.remainingDistance取绝对值,mathf.Abs(nav.remainingDistance)小于一个很小的数,比如0.1或者0.01,if (mathf.Abs(nav.remainingDistance) < 0.01) { animator.SetBool("Move", false); }else{...}
2023-07-18 00:18:451

android怎么获取navigation bar显示或隐藏状态

在让navigation bar 显示货隐藏前,需要判断是否存在navigationbar。public static boolean checkDeviceHasNavigationBar(Context activity) { //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar boolean hasMenuKey = ViewConfiguration.get(activity) .hasPermanentMenuKey(); boolean hasBackKey = KeyCharacterMap .deviceHasKey(KeyEvent.KEYCODE_BACK); if (!hasMenuKey && !hasBackKey) { // 做任何自己需要做的,这个设备有一个导航栏 return true; } return false; }安卓4.1之后为全虚拟键操作,和actionbar对应,底部的虚拟键菜单称为Navigation Bar。 myview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION),其中的myview 可以为Layout中任意的一个View对象(可以有findViewById得到)。
2023-07-18 00:18:521

unity button的navigation有什么用

主要用于手柄上下左右键选择按钮
2023-07-18 00:19:002

A*寻路,Navigation寻路,路点寻路三者之间的区别以及应用范围.

首先,G值是从开始点到当前点的移动量,H值是从当前点到终点的移动估算量。既然F=G+H.如果F值和H值都相同,那么G值也是相同的,也就是说从开始点走了同样的距离,移动到两个不同的节点,而这两个节点距离重点的距离也是相同的。那就继续往下进行算法。如果继续下去之后,这两个节点还是一样的情况,那说明有两条最优路径,不然一定会有一个节点会被淘汰。
2023-07-18 00:19:091

导航拦英语怎么翻译?Navigation和menu哪个合适些

我看都可以menu和navigation包含所有内容。所以应有很多下拉条如果只是下拉条中一条的话: navigation bar
2023-07-18 00:19:581

怎么打开word的navigation

单击功能区的“文件” 选项卡,再点击“选项”,打开“Word选项”对话框。在打开的“Word选项”对话框中切换到“高级”选项卡,在“编辑选项”区域中勾选“启用‘即点即 输"”复选框,并单击“确定”按钮。
2023-07-18 00:20:061

NavigationCancelled什么意思

Navigation(导航)Cancelled(取消)==导航已取消
2023-07-18 00:20:211

如何开启或隐藏Navigation Bar导航栏

第一步:修改系统变量。打开目录下文件:alps/device/gxq/工程名字/system.prop修改变量值:qemu.hw.mainkeys=01 表示隐藏Navigationbar0 表示显示Navigationbar注意: 如果工程没有定义该变量,再进行第二步。否则修改结束。因系统变量优先级比配置文件高。第二步:修改配置文件。修改config文件中的config_showNavigationBar的值。隐藏Navigationbar:<bool name=“config_showNavigationBar”>false</bool>将这个配置信息修改为false即可。显示Navigationbar:<bool name=“config_showNavigationBar”>true</bool>将这个配置信息修改为true即可。修改config文件中的 config_showNavigationBar的值目录如下:如果下面目录文件覆盖了config_showNavigationBar,则修改config_showNavigationBar值。(alpsdevicemediatekcommonoverlay avbarframeworksasecore es esvaluesconfig.xml)否则,修改下面目录config.xml文件的config_showNavigationBar值。(alps/frameworks/base/core/res/res/values/config.xml),
2023-07-18 00:20:301

navigationsystem怎么连蓝牙

1、首先把手机蓝牙和navigationsystem蓝牙都打开。2、其次在手机的蓝牙界面,点击“搜索设备”,搜索到navigationsystem。3、最后点击连接即可。
2023-07-18 00:20:381

approach navigation data什么意思

处理导航数据
2023-07-18 00:20:572

html中role="navigation"是什么意思

role 角色或功能navigation 是导航用的。你这个用bootstrap 吧看看http://www.bootcss.com/ 有说明
2023-07-18 00:21:041

求助,不用鼠标的话怎么样才能让button的navigation起作用

根节点下有个EventSyetem对象,上面有个默认激活的对象。
2023-07-18 00:21:142

react navigation怎么获取栈顶页面

具体内容大致分为如下:(1)react-navigation库属性介绍(2)StackNavigator、TabNavigator实现界面间跳转,Tab切换(3)StackNavigator界面间跳转、传值、取值(4)DrawerNavigator实现抽屉导航菜单(5)DrawerNavigator扩展功能(6)修改源码,定制UI界面1、StackNavigator属性介绍navigationOptions:配置StackNavigator的一些属性。 title:标题,如果设置了这个导航栏和标签栏的title就会变成一样的,不推荐使用 header:可以设置一些导航的属性,如果隐藏顶部导航栏只要将这个属性设置为null headerTitle:设置导航栏标题,推荐 headerBackTitle:设置跳转页面左侧返回箭头后面的文字,默认是上一个页面的标题。可以自定义,也可以设置为null headerTruncatedBackTitle:设置当上个页面标题不符合返回箭头后的文字时,默认改成"返回" headerRight:设置导航条右侧。可以是按钮或者其他视图控件 headerLeft:设置导航条左侧。可以是按钮或者其他视图控件
2023-07-18 00:21:211

unity2019 navigation bake没用?

打开Navigation面板 Unity菜单栏WindowAINavigation,然后会出现在Inspector面板右边设置烘培参数 Bake Agent Size Agent Radius -- 智能体大小 Agent Height -- 智能体高度 Max Slope -- 智能体能走的路的最大的斜率,超过这个值,智能体就不能走在那条路线上 Step Height -- 智能体可以爬上去的最大的高度,上台阶,如果台阶高过这个值,智能体无法爬上去这个值必须小于智能体高度 Generated Off Mesh Links Advanced Manul Voxel Size -- 网格分割,这个值越小,分割出的网格越细密,性能消耗越大 Min Region Area -- 寻路能识别的最小的区域,小于这个值的区域不会被当做可寻路的区域,就不会被烘焙 Height Mesh -- 是否开启高度网格,开启后,路线就不是平的了,会像上楼梯突然网上,或者往下,不开启路线就是平的,楼梯相当于斜着放的平板,不会有突然的上下,这个可以让寻路更精确,楼梯就是楼梯,斜面就是斜面,可以被区分
2023-07-18 00:21:281

MG7导航一体机显示navigation system.怎么办

是电瓶断过电了 或机器升级过了的原因:1,是一闪而过的 可是停留在这个画面的话,自己可以再拔下电瓶线试试。2,用牙签点下RESTEST键。看看是否能恢复,不能恢复,就再设置下导航路径。3,把电瓶正负极线拔掉重接,如搞不定再说。(相当于电脑的重新开机)。4,以上说的全都试过了,其它功能正常,一进入导航就停在navigation system这人界面。
2023-07-18 00:21:361

ios 怎么获取navigationcontroller

ios 怎么获取navigationcontroller,如下:UINavigationController是IOS编程中的一个view controller的容器,通过栈管理viewControllers,每一次push操作都将在栈顶添加一个view controller,然后通过pop将该栈最顶端的controller移除。我们在工程中,通常会在controller中执行[self.navigationController popViewControllerAnimated:NO];来移除栈顶controller。假设现在有UIViewController的子类对象,A、B、C、D。//将A控制器设置为根控制器UINavigationController *myFirstCtrl =[[UINavigationController alloc] initWithRootViewController:myFirstCtrl];self.window.rootViewController = m_firstCtrl;//在A控制器中,push B控制器....[self.navigationController pushViewController:B animated:NO];....//在B控制器中,push C控制器....[self.navigationController pushViewController:B animated:NO];....//在C控制器中,push D控制器....[self.navigationController pushViewController:B animated:NO];....则此时A控制器的栈中,有四个元素,我们认为在B、C、D中都没有pop操作,此时,在A控制器中,执行[self.navigationController popViewControllerAnimated:NO];则是将D控制器从栈中移除,并非我们理解的将A控制器本身移除。同样,再次执行时,是将C控制器移除。以前,我都是认为移除自身的,今天跟同事进行讨论后,写了一个demo验证了一下,才知道了真相。所以,写出来跟大家分享一下,也许大家已经知道了,闻道有先后,虽然我可能知道的迟了点,但是我还是很高兴分享出来,给还不知道的朋友。//检查view 是否在堆栈中-(int) checkPushOrPop:(UIViewController*) uiViewController{NSArray *viewControllers = self.navigationController.viewControllers;if (viewControllers.count > 1 && [viewControllers objectAtIndex:viewControllers.count-1] == uiViewController) {//堆栈里最后一个 当前显示的return 0;} else if ([viewControllers indexOfObject:uiViewController] != NSNotFound) {//在堆栈里 但是当前不显示的return 1;}//不在堆栈里return -1;}
2023-07-18 00:21:431

如何控制android系统中NavigationBar 的显示与隐藏

在让navigation bar 显示货隐藏前,需要判断是否存在navigationbar。 public static boolean checkDeviceHasNavigationBar(Context activity) { //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar boolean hasMenuKey = ViewConfiguration.get(activity) .hasPermanentMenuKey(); boolean hasBackKey = KeyCharacterMap .deviceHasKey(KeyEvent.KEYCODE_BACK); if (!hasMenuKey && !hasBackKey) { // 做任何自己需要做的,这个设备有一个导航栏 return true; } return false; } 安卓4.1之后为全虚拟键操作,和actionbar对应,底部的虚拟键菜单称为Navigation Bar。 myview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION),其中的myview 可以为Layout中任意的一个View对象(可以有findViewById得到)。
2023-07-18 00:21:511

安卓5.1如何让navigationbar显示在屏幕的左侧

  我们使用的大多数android手机上的Home键,返回键以及menu键都是实体触摸感应按键。如果你用Google的Nexus4或Nexus5话,你会发现它们并没有实体按键或触摸感应按键,取而代之的是在屏幕的下方加了一个小黑条,在这个黑条上有3个按钮控件,这种设置无疑使得手机的外观的设计更加简约。但我遇到身边用Nexus 4手机的人都吐槽这种设计,原因很简单:好端端的屏幕,被划出一块区域用来显示3个按钮(如下图所示):Back, Home, Recent。并且它一直用在那里占用着。  在android源码中,那一块区域被叫做NavigationBar。同时,google在代码中也预留了标志,用来控制它的显示与隐藏。NavigationBar的显示与隐藏的控制是放在SystemU中的,具体的路径是:frameworksasepackagesSystemUI。对android4.0以上的手机而言,SystemUi包含两部分:StatusBar和NavigationBar。在SystemUI的工程下有一个类PhoneStatusBar.java,在该类中可以发现关于控制NavigationBar的相关代码:  在start()方法里可以看到NavigationBar是在那时候被添加进来,但只是添加,决定它显示还是隐藏是在后面控制的。  <span style="font-size:18px;">@Override  public void start() {  mDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))  .getDefaultDisplay();  updateDisplaySize();  /// M: Support Smartbook Feature.  if (SIMHelper.isMediatekSmartBookSupport()) {  /// M: [ALPS01097705] Query the plug-in state as soon as possible.  mIsDisplayDevice = SIMHelper.isSmartBookPluggedIn(mContext);  Log.v(TAG, "start, mIsDisplayDevice=" + mIsDisplayDevice);  }  super.start(); // calls createAndAddWindows()  addNavigationBar();  // Lastly, call to the icon policy to install/update all the icons.  mIconPolicy = new PhoneStatusBarPolicy(mContext);  mHeadsUpObserver.onChange(true); // set up  if (ENABLE_HEADS_UP) {  mContext.getContentResolver().registerContentObserver(  Settings.Global.getUriFor(SETTING_HEADS_UP), true,  mHeadsUpObserver);  }  }</span>  其中的addNavigationBar()具体的实现方法如下:  <span style="font-size:18px;"> // For small-screen devices (read: phones) that lack hardware navigation buttons  private void addNavigationBar() {  if (DEBUG) Slog.v(TAG, "addNavigationBar: about to add " + mNavigationBarView);  if (mNavigationBarView == null) return;  prepareNavigationBarView();  mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams());  }</span>  可以看到Navigationbar实际上windowmanager向window窗口里添加一个view。在调用addNavigationBar()方法之前会回调start()的父方法super.start()来判断是否要添加NavigationBar。在super.start()的调用父类方法里会调用createAndAddWindows(),该方法内会判断是否需要添加显示NavigationBar,然后决定是否要实例化NavigationBarView.  <span style="font-size:18px;">try {  boolean showNav = mWindowManagerService.hasNavigationBar();  if (DEBUG) Slog.v(TAG, "hasNavigationBar=" + showNav);  if (showNav) {  mNavigationBarView =  (NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);  mNavigationBarView.setDisabledFlags(mDisabled);  mNavigationBarView.setBar(this);  }  } catch (RemoteException ex) {  // no window manager? good luck with that  }</span>  WindowManagerService类实现了WindowManagerPolicy的接口,所以WindowManagerService会回调WindowManagerPolicy 的hasNavigationBar()接口,  <span style="font-size:18px;"> @Override  public boolean hasNavigationBar() {  return mPolicy.hasNavigationBar();  }</span>  Policy向下调用实际上调用的是PhoneWindowManager实现的hasNavigationBar方法,下面代码是PhoneWindowManager中的hasNavigationBar()方法。  <span style="font-size:18px;">// Use this instead of checking config_showNavigationBar so that it can be consistently  // overridden by qemu.hw.mainkeys in the emulator.  public boolean hasNavigationBar() {  return mHasNavigationBar;  }</span>  而mHasNavigationBar的赋值可以在PhoneWindowManager中的setInitialDisplaySize(Display display, int width, int height, int density)方法中找到,  <span style="font-size:18px;"> if (!mHasSystemNavBar) {  mHasNavigationBar = mContext.getResources().getBoolean(  com.android.internal.R.bool.config_showNavigationBar);  // Allow a system property to override this. Used by the emulator.  // See also hasNavigationBar().  String navBarOverride = SystemProperties.get("qemu.hw.mainkeys");  if (! "".equals(navBarOverride)) {  if (navBarOverride.equals("1")) mHasNavigationBar = false;  else if (navBarOverride.equals("0")) mHasNavigationBar = true;  }  } else {  mHasNavigationBar = false;  }</span>  从上面代码可以看到mHasNavigationBar的值的设定是由两处决定的:  1.首先从系统的资源文件中取设定值config_showNavigationBar, 这个值的设定的文件路径是frameworks/base/core/res/res/values/config.xml  <!-- Whether a software navigation bar should be shown. NOTE: in the future this may be  autodetected from the Configuration. -->  <bool name="config_showNavigationBar">false</bool>  2.然后系统要获取“qemu.hw.mainkeys”的值,这个值可能会覆盖上面获取到的mHasNavigationBar的值。如果 “qemu.hw.mainkeys”获取的值不为空的话,不管值是true还是false,都要依据后面的情况来设定。  所以上面的两处设定共同决定了NavigationBar的显示与隐藏。
2023-07-18 00:22:001

微信小程序 navigationbar怎么配置

微信小程序——配置 以下就是小编对小程序配置的资料进行的系统的整理,希望能对开发者有帮助。 我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。 以下是一个包含了所有配置选项的简单配置app.json : { "pages": [ "pages/index/index", "pages/logs/index" ], "window": { "navigationBarTitleText": "Demo" }, "tabBar": { "list": [{ "pagePath": "pages/index/index", "text": "首页" }, { "pagePath": "pages/logs/logs", "text": "日志" }] }, "networkTimeout": { "request": 10000, "downloadFile": 10000 }, "debug": true } app.json 配置项列表 属性 类型 必填 描述 pages Array 是 设置页面路径 window Object 否 设置默认页面的窗口表现 tabBar Object 否 设置底部 tab 的表现 networkTimeout Object 否 设置网络超时时间 debug Boolean 否 设置是否开启 debug 模式 pages 接受一个数组,每一项都是字符串,来指定小程序由哪些页面组成。每一项代表对应页面的【路径+文件名】信息,数组的第一项代表小程序的初始页面。小程序中新增/减少页面,都需要对 pages 数组进行修改。 文件名不需要写文件后缀,因为框架会自动去寻找路径.json,.js,.wxml,.wxss的四个文件进行整合。 如开发目录为: pages/ pages/index/index.wxml pages/index/index.js pages/index/index.wxss pages/logs/logs.wxml pages/logs/logs.js app.js app.json app.wxss 则,我们需要在 app.json 中写 { "pages":[ "pages/index/index" "pages/logs/logs" ] } window 用于设置小程序的状态栏、导航条、标题、窗口背景色。 属性 类型 默认值 描述 navigationBarBackgroundColor HexColor #000000 导航栏背景颜色,如"#000000" navigationBarTextStyle String white 导航栏标题颜色,仅支持 black/white navigationBarTitleText String 导航栏标题文字内容 backgroundColor HexColor #ffffff 窗口的背景色 backgroundTextStyle String dark 下拉背景字体、loading 图的样式,仅支持 dark/light 注:HexColor(十六进制颜色值),如"#ff00ff" 如 app.json : { "window":{ "navigationBarBackgroundColor": "#ffffff", "navigationBarTextStyle": "black", "navigationBarTitleText": "微信接口功能演示", "backgroundColor": "#eeeeee", "backgroundTextStyle": "light" } } tabBar 如果我们的小程序是一个多 tab 应用(客户端窗口的底部有tab栏可以切换页面),那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。 tabBar 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。 属性说明: 属性 类型 必填 默认值 描述 color HexColor 是 tab 上的文字默认颜色 selectedColor HexColor 是 tab 上的文字选中时的颜色 backgroundColor HexColor 是 tab 的背景色 borderStyle String 否 black tabbar上边框的颜色, 仅支持 black/white list Array 是 tab 的列表,详见 list 属性说明,最少2个、最多5个 tab 其中 list 接受一个数组,数组中的每个项都是一个对象,其属性值如下: 属性 类型 必填 说明 pagePath String 是 页面路径,必须在 pages 中先定义 text String 是 tab 上按钮文字 iconPath String 是 图片路径,icon 大小限制为40kb selectedIconPath String 是 选中时的图片路径,icon 大小限制为40kb networkTimeout 可以设置各种网络请求的超时时间。 属性说明: 属性 类型 必填 说明 request Number 否 wx.request的超时时间,单位毫秒 connectSocket Number 否 wx.connectSocket的超时时间,单位毫秒 uploadFile Number 否 wx.uploadFile的超时时间,单位毫秒 downloadFile Number 否 wx.downloadFile的超时时间,单位毫秒 debug 可以在开发者工具中开启 debug 模式,在开发者工具的控制台面板,调试信息以 info 的形式给出,其信息有Page的注册,页面路由,数据更新,事件触发 。 可以帮助开发者快速定位一些常见的问题。 page.json 每一个小程序页面也可以使用.json文件来对本页面的窗口表现进行配置。 页面的配置比app.json全局配置简单得多,只是设置 app.json 中的 window 配置项的内容,页面中配置项会覆盖 app.json 的 window 中相同的配置项。 页面的.json只能设置 window 相关的配置项,以决定本页面的窗口表现,所以无需写 window 这个键,如: { "navigationBarBackgroundColor": "#ffffff", "navigationBarTextStyle": "black", "navigationBarTitleText": "微信接口功能演示", "backgroundColor": "#eeeeee", "backgroundTextStyle": "light" } 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
2023-07-18 00:22:071

tabbar中的navigationcontroller怎么添加不上title

1.在initWithNibName:bundle:方法中设置 self.title=@"A";2.在ViewDidLoad方法中设置self.navigationController.title=@“B";代码例子:- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil{ self= [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if(self) { // Custom initialization self.title=@"A"; } returnself;}- (void)viewDidLoad{ self.navigationController.title=@"B";}说明:如果只在init方法中设置了”self.title=@"A";“那么navigation的title和tab的title都是A,用self.navigationController.title=@“B";之后会把Tab的titile覆盖变为B 最终结果是navigation的title是A,tab的title都是B------ 其他尝试: 1.self.tabBarController.title=@"AAA";在initWithNibName中设置没效果,在ViewDidLoad方法中也没有效果;2.self.tabBarItem.title=@"ddd";在initWithNibName中设置没效果,在ViewDidLoad方法中也没有效果;3.self.navigationItem.title=@"dddd";在initWithNibName中设置没效果,在ViewDidLoad方法中也没有效果;4.self.tabBarController.tabBarItem.title=@"ddd";在initWithNibName中设置没效果,在ViewDidLoad方法中也没有效果;5. self.navigationController.navigationItem.title=@"dddd";在initWithNibName中设置没效果,在ViewDidLoad方法中也没有效果;------ 只设置tabbar的title: 代码:UITabBarItem*item1=[[UITabBarItemalloc]initWithTitle:@"aa"image:niltag:0]; UITabBarItem*item2=[[UITabBarItemalloc]initWithTitle:@"bb"image:niltag:1]; UITabBarItem*item3=[[UITabBarItemalloc]initWithTitle:@"cc"image:niltag:2]; UITabBarItem*item4=[[UITabBarItemalloc]initWithTitle:@"dd"image:niltag:3]; addressBook.tabBarItem=item1; chat.tabBarItem=item2; //self.viewController.tabBarItem=item3; addFriendNavigation.tabBarItem=item3; setting.tabBarItem=item4; tabController.viewControllers=[NSArrayarrayWithObjects:addressBook,chat,addFriendNavigation,setting, nil]; [tabController setSelectedIndex:2];同时设置各UIViewC on t roller的navigation的title在initWithNibName:bundle:方法中设置 self.title=@"A";
2023-07-18 00:22:261

ios怎么设置navigationbar的titleview的宽度

这个要用自定义的view才能设置:方法如下//设置标题//self.title=@"title1";//修改title会改变navigationItem。title,但反之不会,一般设置title用此方法就好了//self.navigationController.title=@"title2";////自定义标题//UIView*view=[[UIViewalloc]initWithFrame:CGRectMake(0,0,100,44)];//view.backgroundColor=[UIColorredColor];UILabel*title=[[UILabelalloc]initWithFrame:CGRectMake(0,0,100,44)];title.text=@"title3";title.textAlignment=NSTextAlignmentCenter;title.textColor=[UIColorredColor];self.navigationItem.titleView=title;
2023-07-18 00:22:331

selenium2中实例化navigation和get的区别

navigate():用来模拟浏览器工具栏上一些按钮的功能;而get():则是寻找的是页面元素进行操作,找的JavaScript。
2023-07-18 00:22:401

什么单词后面是gation

navigation n. 航行,航海,导航
2023-07-18 00:22:493

如何在navigationcontroller中间设置个按钮

 一、UINavigationcontroller自带的navigationBar 是无法添加左箭头的返回按钮的  在网上搜索了一下 但是真的有方法可以添加成功,但是前提是该 navigationBar不是NavigationController自带的。  如果是自带的navigationBar就无法添加成功,会出现    [csharp] view plaincopy  Terminating app due to uncaught exception "NSInternalInconsistencyException", reason: "Cannot call setItems:animated: directly on a UINavigationBar managed by a controller."这样的错误,意思就是“ 苹果不允许 直接对受一个Controller控制的naviBar 进行 setItems操作”, 仔细一查,真的有这样的规定    "The navigation bar managed by the controller. Pushing, popping or setting navigation items on a managed navigation bar is not supported."  意思很明确了: 这个naviBar是受controller管理的,不支持Pushing, popping or setting navigation items操作。  看到这儿,我也很无语了,所以只好自己切图了,切出左箭头的样式来添加leftBarButtonItem 了。    二、单独的UINavigationBar添加左箭头的返回按钮  但是还是贴出来,单独的一个NavigationBar怎么添加 左箭头的返回按钮代码,这段代码想必看了很多次了吧,哈哈,不厌其烦的在贴一遍好了    [csharp] view plaincopy  UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@""];  [self.naviBar pushNavigationItem:navigationItem animated:NO];  self.naviBar.delegate = self;  //创建一个右边按钮  UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边"  style:UIBarButtonItemStyleDone  target:self  action:@selector(clickRightButton)];  [navigationItem setRightBarButtonItem:rightButton];  [navigationItem setTitle:@"我的页面"];  UINavigationItem *item = [self.naviBar.items objectAtIndex:0];  [self.naviBar pushNavigationItem:item animated:YES];  UINavigationItem *back = [[UINavigationItem alloc] initWithTitle:@"Back"];  NSArray *items = [[NSArray alloc] initWithObjects:back,item,nil];  [self.naviBar setItems:items animated:NO];      如何捕获左箭头返回按钮的事件呢? 你需要去实现 UINavigationBarDelegate 协议里面的方法。    [csharp] view plaincopy  - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item  {  //在此处添加点击back按钮之后的操作代码  NSLog(@"aaaaaaaaaaaaa");  return FALSE;  }
2023-07-18 00:23:381

navigationpane在那里打开

手上只有文字材料,需要用PPT来汇报,那怎么高效转换,除了复制粘贴?快速满足这个基本需求。第一步,需要对所需要的内容进行大纲级别的设置。会对应PPT里的不同内容。第二步,在窗口上方的选项卡命令这里找到“发送到Microsoft PowerPoint演示”。如果桌面上没有,要自己添加“发送到PPT”命令到开始选项卡。要找到并添加。进入到自定义功能区,有个简单快捷方式,选择Word上方任意命令,然后右键,直接选择“自定义功能区”(Customize the Ribbon)。左边点击“不在功能区中的命令”,是按照拼音或字母的排序列表,找到“发送到PPT”。然后右边需要在“开始”选项卡下建立一个组,然后重命名,才把这个命令添加到这个组内。----------------------------------------- 设置已完成。下面需要设置大纲级别。所见即所得的大纲设定,需要进入大纲视图。视图选项卡,点击大纲(Outline)。这里就可以对每行内容设定级别。大纲视图的内容看起来和平时显示的区别很大,操作不那么舒服。但在2013以上的版本还有个更高效的方式,就是导航窗格。在视图选项卡中,勾选导航窗格(Navigation Pane)显示,左边就会穿线一个导航窗口,所见即所得。或者关闭后,点击左下角第几页那里,还能打开导航窗格。----------------------------------------- 开始设置级别。Word和PPT之间的转换逻辑,Word的一级标题对应PPT的标题。二级标题对应标题下文的正文内容。三级标题对应正文内容的下属内容。一般三级就远远足够了。右键选中一行内容,点击段落,然后设置大纲级别一级。按住CTRL + 鼠标左键就能同时选择不连续的行内容。一级设置完成后设置二级。-------------------------------------------- 点击发送到PPT命令,会生成一个PPT。双击窗口最大化显示,并点击“启用编辑”。然后对PPT进行一定的调整。第一页是封面页,右键此页,选择版式(Layout),选标题幻灯片(Title Slide)。标题和副标题调整一下。在Word发送到PPT的过程中,图片和
2023-07-18 00:23:452

如何Android中自定义Navigationbar

我们使用的大多数android手机上的Home键,返回键以及menu键都是实体触摸感应按键。如果你用Google的Nexus4或Nexus5话,你会发现它们并没有实体按键或触摸感应按键,取而代之的是在屏幕的下方加了一个小黑条,在这个黑条上有3个按钮控件,这种设置无疑使得手机的外观的设计更加简约。但我遇到身边用Nexus 4手机的人都吐槽这种设计,原因很简单:好端端的屏幕,被划出一块区域用来显示3个按钮(如下图所示):Back, Home, Recent。并且它一直用在那里占用着。  在android源码中,那一块区域被叫做NavigationBar。同时,google在代码中也预留了标志,用来控制它的显示与隐藏。NavigationBar的显示与隐藏的控制是放在SystemU中的,具体的路径是:frameworksasepackagesSystemUI。对android4.0以上的手机而言,SystemUi包含两部分:StatusBar和NavigationBar。在SystemUI的工程下有一个类PhoneStatusBar.java,在该类中可以发现关于控制NavigationBar的相关代码:  在start()方法里可以看到NavigationBar是在那时候被添加进来,但只是添加,决定它显示还是隐藏是在后面控制的。  <span style="font-size:18px;">@Override  public void start() {  mDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))  .getDefaultDisplay();  updateDisplaySize();  /// M: Support Smartbook Feature.  if (SIMHelper.isMediatekSmartBookSupport()) {  /// M: [ALPS01097705] Query the plug-in state as soon as possible.  mIsDisplayDevice = SIMHelper.isSmartBookPluggedIn(mContext);  Log.v(TAG, "start, mIsDisplayDevice=" + mIsDisplayDevice);  }  super.start(); // calls createAndAddWindows()  addNavigationBar();  // Lastly, call to the icon policy to install/update all the icons.  mIconPolicy = new PhoneStatusBarPolicy(mContext);  mHeadsUpObserver.onChange(true); // set up  if (ENABLE_HEADS_UP) {  mContext.getContentResolver().registerContentObserver(  Settings.Global.getUriFor(SETTING_HEADS_UP), true,  mHeadsUpObserver);  }  }</span>  其中的addNavigationBar()具体的实现方法如下:  <span style="font-size:18px;"> // For small-screen devices (read: phones) that lack hardware navigation buttons  private void addNavigationBar() {  if (DEBUG) Slog.v(TAG, "addNavigationBar: about to add " + mNavigationBarView);  if (mNavigationBarView == null) return;  prepareNavigationBarView();  mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams());  }</span>  可以看到Navigationbar实际上windowmanager向window窗口里添加一个view。在调用addNavigationBar()方法之前会回调start()的父方法super.start()来判断是否要添加NavigationBar。在super.start()的调用父类方法里会调用createAndAddWindows(),该方法内会判断是否需要添加显示NavigationBar,然后决定是否要实例化NavigationBarView.  <span style="font-size:18px;">try {  boolean showNav = mWindowManagerService.hasNavigationBar();  if (DEBUG) Slog.v(TAG, "hasNavigationBar=" + showNav);  if (showNav) {  mNavigationBarView =  (NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);  mNavigationBarView.setDisabledFlags(mDisabled);  mNavigationBarView.setBar(this);  }  } catch (RemoteException ex) {  // no window manager? good luck with that  }</span>  WindowManagerService类实现了WindowManagerPolicy的接口,所以WindowManagerService会回调WindowManagerPolicy 的hasNavigationBar()接口,  <span style="font-size:18px;"> @Override  public boolean hasNavigationBar() {  return mPolicy.hasNavigationBar();  }</span>  Policy向下调用实际上调用的是PhoneWindowManager实现的hasNavigationBar方法,下面代码是PhoneWindowManager中的hasNavigationBar()方法。  <span style="font-size:18px;">// Use this instead of checking config_showNavigationBar so that it can be consistently  // overridden by qemu.hw.mainkeys in the emulator.  public boolean hasNavigationBar() {  return mHasNavigationBar;  }</span>  而mHasNavigationBar的赋值可以在PhoneWindowManager中的setInitialDisplaySize(Display display, int width, int height, int density)方法中找到,  <span style="font-size:18px;"> if (!mHasSystemNavBar) {  mHasNavigationBar = mContext.getResources().getBoolean(  com.android.internal.R.bool.config_showNavigationBar);  // Allow a system property to override this. Used by the emulator.  // See also hasNavigationBar().  String navBarOverride = SystemProperties.get("qemu.hw.mainkeys");  if (! "".equals(navBarOverride)) {  if (navBarOverride.equals("1")) mHasNavigationBar = false;  else if (navBarOverride.equals("0")) mHasNavigationBar = true;  }  } else {  mHasNavigationBar = false;  }</span>  从上面代码可以看到mHasNavigationBar的值的设定是由两处决定的:  1.首先从系统的资源文件中取设定值config_showNavigationBar, 这个值的设定的文件路径是frameworks/base/core/res/res/values/config.xml  <!-- Whether a software navigation bar should be shown. NOTE: in the future this may be  autodetected from the Configuration. -->  <bool name="config_showNavigationBar">false</bool>  2.然后系统要获取“qemu.hw.mainkeys”的值,这个值可能会覆盖上面获取到的mHasNavigationBar的值。如果 “qemu.hw.mainkeys”获取的值不为空的话,不管值是true还是false,都要依据后面的情况来设定。  所以上面的两处设定共同决定了NavigationBar的显示与隐藏。
2023-07-18 00:23:532

Android Studio navigation 一直在Loading为什么?

目没有完全构建成功,所以一直在Loading,建议你查看Android Studio右下角构建进度,看看正处于哪种阶段,大部分情况正在下载需要的依赖等。在网络畅通的情况下,等待一段时间,看看有没有构建成功,如果没有构建成功,也会有相对应的报错信息,再针对具体问题进行修改即可1.打开ShadowShocks客户端开启fan墙模式(或其他工具)。2.Android Studio中设置HTTP Proxy,点击“Setting” -> "HTTP Proxy",勾选"Auto-detect proxy settings",点击”OK“即可。
2023-07-18 00:24:001

WPF中使用Navigation切换Page时,如何实现渐变或者翻转动画?

这个可能需要用其他的方法实现了,因为Navigation的动画就是针对一个完整的PAGE
2023-07-18 00:24:072

navigation pages是什么意思

  Navigation Pages  导航页面;  [例句]The navigation display area is divided into two major parts, animated titles and navigation pages.  正在导航展现圆里分别为两年夜部门,片头动绘取导航页里。
2023-07-18 00:24:261