现在ActionBar广泛用做APP的顶部导航栏,它在布局上主要分为三部分:左边是返回区域,包括logo、返回箭头、左侧标题等等;右边是菜单区域,放的是溢出菜单OverflowMenu的各菜单项;中间是条件区域...显示或者关闭ActionBar的方式有如下几种: 1、在AndroidManifest.xml中给activity设置无标题栏的主题,就关闭ActionBar。...: 是否在左侧返回区域显示返回箭头,默认不显示 setDisplayShowTitleEnabled : 是否在左侧返回区域显示左侧标题,默认显示APP名称 setTitle : 设置左侧标题的文本...never : 从不在ActionBar上直接显示,一直放在溢出菜单里面。 always : 总是在ActionBar上显示。...定制视图CustomView 定制视图用于在ActionBar上显示一些个性化内容,比如说,ActionBar自带的标题文字位于左侧区域,而且也不能调整文字大小、颜色等等,如果我们想把标题文本挪到中间
应用内容的标准工具栏,可以说是ActionBar的升级版,两者不是独立关系。 相比ActionBar,ToolBar更加自由,可以随意放置,当一个ViewGroup来使用。...ToolBar提供了可定制、修改的属性: - 导航栏图标 - AppLogo - 主标题、子标题 - 添加一个或多个自定义控件 - 支持Action Menu 使用 1、在res/menu...其中showAsAction可选参数为: always:使菜单项一直显示在ToolBar上 ifRoom:如果有足够的空间,菜单项显示在ToolBar上,否则显示在更多中 never:菜单项永远不显示在...ToolBar上,只显示在更多中 withText:图标和文字一起显示 2、在布局中使用ToolBar ?...3、在Activity中 在setContentView方法之前,设置界面没有标题栏: 如果Activity继承Activity,设置: ?
这是因为v7包版本过低,解决方法是在project:properties里target=android-8改为21以上就好 当抽屉打开的时候,标题栏改为”请选择”,当抽屉关闭的时候,标题栏变为原来的app...上的菜单项,执行这个方法的时候会回调onPreareOptionsMenu() } @Override public void onDrawerClosed(View drawerView)...的内容,因此要调用invalidateOptionsMenu()会重绘actionBar上的菜单项,执行这个方法的时候会回调onPreareOptionsMenu(),所以我们可以在这里通过判断抽屉处于打开还是关闭状态...,来进行一些操作,比如隐藏actionbar的菜单项。...既然要隐藏,那么前提是我们得有菜单项,这里先给actionbar添加一个搜索按钮,关于给ActionBar添加按钮的办法,在关于ActionBar的博客里已经讲过了,所以这里直接操作 res/values
在项目中引入Toolbar 因为Toolbar与ActionBar都占着顶部导航栏的位置,所以要想引入Toolbar就得先关闭ActionBar啦,具体步骤如下所示: 1、在styles.xml中定义一个不包含...SearchAutoComplete控件,该控件在旧SearchView中是隐藏的,在新SearchView中是开放的,所以我们可随意修改v7编辑框的显示风格。...,但即使工具栏上还有空间,该菜单项也不会显示在工具栏上。...2、溢出菜单列表在菜单文字左侧显示图标的方法,使用ActionBar时正常,使用Toolbar时反而不会显示图标了。...解决办法: ActionBar的featureId是8,Toolbar的featureId是108,所以在图标显示方法内部,要同时判断这两个数值,而不能像以前那样仅仅判断Window.FEATURE_ACTION_BAR
actionBar.isShowing()) actionBar.show(); 4、添加操作性,在ActionBar中显示菜单项 大致的实现步骤和菜单实现差不多,只需要修改 android:showAsAction...ActionBar中(默认值) 2 android:showAsAction="always" 一定显示在ActionBar中 3 android:showAsAction...="withText" 显示菜单项文字 4 android:showAsAction="ifRoom" 如果ActionBar有位置就显示 5 android...5、分割菜单栏 在API级别14以上(Android4.0),可以启用ActionBar的分隔操作栏模式,在屏幕的底部会显示一个独立的横条,用于显示Activity在窄屏或者竖屏上运行时的所有操作项 但是只是在底部显示所有的操作项...接口(Tab的选择与取消等事件) * 3、通过ActionBar类对象的newTab()来创建选项卡,同时设置显示的标题和事件监听 * 4、通过ActionBar类对象的addTab()方法,将创建的
同样地,子菜单也可以通过add()方法为自身添加菜单项。 add()方法的四个参数中: 第一个参数是groupId,可以用来控制各个菜单项是否在同一组。...如order=1的菜单项比order=2的要靠上。 第四个参数是title,对应菜单项的标题。 各个菜单项都对应一系列的setter方法,顾名思义即可。...如上图所示的带有标题和两个按钮的叫做ActionBar。是从安卓3.0开始被介绍使用的。系统默认使用ActionBar作为工具栏。ActionBar中的item可以显示为两种——按钮和溢出菜单。...可以说其是ActionBar的一部分。也可以说,其中的菜单项,可以在ActionBar中作为按钮显示出来(通过设置showAsAction的值来实现)。...collapseActionView则属于与toolbar(相当于ActionBar的升级版,在各方面都更灵活)相关的设置,与本文主题偏离,不再赘述。
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果。...ActionBar 3、在我们使用actionBar.hide();方法是系统默认会将ActionBar占用的空间分配给界面,此时显示的界面将会重新绘制。...当菜单项过多时,Android会分两种情况进行处理: 1、手机有MENU实体键:则按下Menu键后会显示剩余菜单项 2、手机没有MENU实体键:则会在最左边显示一个Action OverFlow按钮,...按下后会显示剩余项菜单,如图: 五、使用带字的Action Item 1、Action item 默认格式是如果菜单项含字和图标的话,只显示图标 2、如果想要显示字的效果,在xml里如下设置:android...能否显示在ActionBar的Item主要看android:showAsAction="ifRoom|withText"这个属性。
1.ActionBar的来源 ActionBar是从Android 3.0开始引入的,它是用于取代3.0之前的标题栏,并提供更为丰富的导航效果。...,Android会分两种情况进行处理: 1、手机有MENU实体键:则按下Menu键后会显示剩余菜单项; 2、手机没有MENU实体键:则会在最左边显示一个Action OverFlow按钮,按下后会显示剩余项菜单...属性 android:showAsAction 可以用来设置该菜单项的显示方式,共有5中属性值: never:永远不会显示。只会在溢出列表中显示。...ifRoom:会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。 always:无论是否溢出,总会显示。 withText:Title会显示。...实现应用内的导航呢?
,如改成居中,需要清空默认标题,并添加自定义标题。...首先,在 layout 文件中 增加 TextView 用于显示文字内容,如下 <android.support.v7.widget.Toolbar android:id="@+id/toolbar...= (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(""); setSupportActionBar(toolbar); 如果想修改右侧菜单项...android:icon="@mipmap/add_icon" app:showAsAction="always" /> app:showAsAction 属性决定该菜单项在合适被合并到...里,always代表始终显示,never代表始终合并,ifRoom代表根据屏幕空间自动调整 android:orderInCategory 代表其优先级,即收入 Overflow 里的顺序 为菜单项添加点击处理
由于ActionBar与Toolbar使用方式上的差异,因此造成溢出菜单要分别对这种导航栏进行兼容适配。...举个例子,默认情况下,溢出菜单列表的菜单项不会在文字左边显示图标,即使设置了icon属性也不管用。...要想让菜单项显示左侧图标,得调用MenuBuilder的setOptionalIconsVisible方法,通过菜单的featureId判断此菜单是否来源于ActionBar和Toolbar,如果是这二者来源...true); } catch (Exception e) { e.printStackTrace(); } } } } 再举个例子,如果想让溢出菜单的某个菜单图标显示在导航栏上...即使导航栏上还有空间,也设置了ifRoom或者always的菜单项,可是其图标并不会显示在导航栏上。为什么会这样呢?
Android平台下所提供的菜单大体上可分为三类:选项菜单、上下文菜单和子菜单。 当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单。...,看下菜单项的各个属性: 1、 android:id= 是菜单项id 2、android:orderInCategory= 是菜单项优先级,值越大,优先级越多,当菜单项过多时,可隐藏在折叠菜单中...这个属性可接受的值有: 1.alaways:这个值会使菜单项一直显示在ActionBar上。 2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。 ...3.never:这个值菜单永远不会出现在ActionBar是。 4.withText:这个值使菜单和它的图标,菜单文本一起显示。...:菜单项文字描述 29 item.setTitle("标题"); 30 item.setIcon(R.drawable.icon_72);//api>=11不显示图片 31
本文介绍Android Toolbar的使用 上一节我们介绍了ActionBar的使用,这一节我们介绍ActionBar 的替代者——Toolbar,看看它有多大的能耐!...我的理解是大致如下图所示,如果没有AppCompat,我们开发的应用在不同版本的Android系统上显示起来会像上面一行的三个图片那样,没有统一的界面风格;而如果使用了AppCompat的话,就会像下面一行的三个图片那样...再来看下Toolbar,这是从AppCompat 21版本开始引入的,它的使用就像一个普通的View组件一样,同时它还可以充当ActionBar,这样我们设置的菜单项就会显示在它上面了。...的功能,默认提供了很多种元素可以放置在Toolbar上,其中包括导航按钮、logo图标、标题和子标题、一个或多个自定义的View以及菜单项。...android:attr/colorPrimary" /> (3.3)设置Toolbar为ActionBar 在Activity的onCreate 方法中调用setSupportActionBar(Toolbar
但是这样指定完了之后又会出现新的问题,如果Toolbar中有菜单按钮,那么弹出的菜单项也会变成深色主题,这样就再次变得十分难看,于是这里使用了app:popupTheme属性单独将弹出的菜单项指定成了淡色主题..."单独将弹出的菜单项指定成了淡色主题; 之所以使用app:popupTheme,是因为popupTheme这个属性是在Android5.0系统中新增的,我们使用app:popupTheme的话就可以兼容...接下来在学习一些Toolbar比较常用的功能,比如修改标题栏上显示的文字内容,这段文字是在AndroidManifest.xml中指定的,如下所示: ? ? ? <?...showAsAction主要有以下几种值可选: always表示永远显示在Toolbar中,如果屏幕空间不够则不显示; ifRoom表示屏幕空间足够的情况下显示在Toolbar中,不够的话就显示在菜单当中...; never则表示永远显示在菜单当中。
_viewPager.CurrentItem = tab.Position; }; actionBar.AddTab(tab); } } } 左右导航 标签导航并不适合所有的场景, 有时仅仅需要显示视图的标题即可...-- PaterTitleStrip 即可显示选中页面的标题, 也显示临近选中的几个视图的标题 --> <android.support.v4.view.PagerTitleStrip android...ActionBar 中显示一个下拉列表 (Spinner), 就像一个菜单, 只显示选中的菜单项对应的视图, 如下图所示: ?...将 ActionBar 设置为下拉列表导航时, 一般不显示 Activity 自身的标题, 因此需要将 Activity 的 Label 标记为空字符串, 并且 Activity 需要实现接口 ActionBar.IOnNavigationListener..._viewPager.CurrentItem = itemPosition; return true; } } 向上导航 所谓的向上导航, 就是在 Activity 的图标上显示一个向左的箭头,
3.在onContextItemSelected(...)中响应上下文菜单项。...,看下菜单项的各个属性: 1、 android:id= 是菜单项id 2、android:orderInCategory= 是菜单项优先级,值越大,优先级越多,当菜单项过多时,可隐藏在折叠菜单中...这个属性可接受的值有: 1.alaways:这个值会使菜单项一直显示在ActionBar上。 2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。 ...3.never:这个值菜单永远不会出现在ActionBar是。 4.withText:这个值使菜单和它的图标,菜单文本一起显示。...8 9 menu.setHeaderTitle("操作"); //菜单栏标题 10 menu.setHeaderIcon(R.drawable.icon
actionBar 上面 部分机型 显示不出来 三个点那个按钮 ,大概的解释是 如果设备有菜单功能键,显示隐藏动作的功能将会由Menu菜单功能键实现 就是 有实体的菜单键 就会由菜单键替代。...如果想强制显示 这三个点的按钮,那么将下面这个方法 放入oncreate里面调用。..."@string/all"/> showAsAction 后面参数解释: ALWAYS:总是将该MenuItem显示在...ActionBar上 COLLAPSE_ACTION_VIEW:将该Action View折叠成普通菜单项 IF_ROOM:当ActionBar位置有足够空间时才显示该MenuItem NEVER:不将该...MenuItem显示在ActionBar上 WITH_TEXT:将该MenuItem显示在ActionBar上,且显示该菜单项的文本
Acitivity: 在setContentView(R.layout.activity_main);前添加语句,必须在前面否则会出错 requestWindowFeature(Window.FEATURE_NO_TITLE...;return false:创建的菜单无法显示 } 参考链接:android中menu.add()的使用说明_Jason_新浪博客 扩展-带子菜单项:Android menu add中的4个参数说明 -...目录下新建menu文件夹:app-->src->main-->res上右键new---Android resource directory:resource type下拉列表选择menu (2)menu...Android的onCreateOptionsMenu()创建菜单Menu详解 - 推酷 扩展-android ActionBar与Menu - 1 - api demos 学习 - - ITeye...技术网站 解决icon无法显示:android菜单创建的两种方式和菜单项添加图标 - 初学者 - 51CTO技术博客 五、销毁活动 finish();
2.2.1 menu是用来在NavigationView中显示具体的菜单项的; 为Menu resource file;...:title属性指定菜单项显示的文字。...2.2.2 headerLayout则是用来在NavigationView中显示头部布局的。...menu是用来在NavigationView中显示具体的菜单项的; headerLayout则是用来在NavigationView中显示头部布局的。...这里一共定义了5个item, 分别使用 android:id属性指定菜单项的id, android:icon属性指定菜单项的图标, android:title属性指定菜单项显示的文字。
ActionBar 简介 ActionBar 位置 : 位于老版本的标题栏位置; ActionBar 功能简介 : -- 菜单显示 : 显示选项菜单; -- 回退键 : 程序图标可以作为回退键使用;...上, 就不强制手机集成 MENU 按键了; -- ActionItem 实现方式 : 有两种方式可以实现, 一种是纯代码形式, 在代码中生成, 一种是在配置文件中配置菜单项; 1....使用代码控制选项菜单 MenuItem.setShowAsAction()方法 : 设备选项菜单是否显示在 ActionBar 上; -- SHOW_AS_ACTION_ALWAYS 参数 : 总是显示...上, 并显示菜单项文本; 2....代码解析 标签在 xml 文件中配置 : -- android:actionViewClass 属性 : 在 ActionBar 上显示一个已定义的组件, 设置类的全路径名称; --
例如上图,在按下菜单键后会弹出对应的菜单选项,准确来说,是在菜单键弹起后出现的一个popupwindow,那么从菜单键弹起到popupwindow创建所涉及到的历程是怎样的呢?...理论上是底层监测menu按键键值,通知framework层,framework经过一系列的处理后分发给上层,或者拦截掉 现在是假设framework层已经把menu按键分发给了用户,那么接下里就是activity...通过以上方法的分析可以总结出,一个menu事件在传递给activity后,如果不是menu事件就会直接交给window会向下传递,有三方可能进行处理 actionbar window view...这三个优先级由高到低,也就是说,menu事件会首先传递给actionbar,如果actionbar进行了处理并且将事件拦截下来不派发给窗口,那么menu事件到actionbar处理之后就结束了。...表示了菜单项的popupwindow是否正在显示 //,以及要打开菜单项的进程是否已经初始化,菜单项是否不是空 //初始化popupwindow对象
领取专属 10元无门槛券
手把手带您无忧上云