Android Toolbar的详细使用步骤

Android Toolbar的详细使用步骤,第1张

1.首先在 build.gradle 引入support v7包

2.找到 Manifest 文件的 Application 标签下 Theme 属性

3.自定义 Theme 属性,因为 Activity 默认是有 ActionBar 的,所以需要先将默认的 ActionBar 去掉( parent="Theme.AppCompat.Light.NoActionBar" ),并根据项目需求选择主题的每个特定的属性

附录一张常用属性图,上面的每个属性就很好理解了。

1.先在需要添加 Toolbar 的 xml 文件中,加入 Toolbar 控件

解释一下 Toolbar 里面的属性,这里面的属性大多见名知意,很好理解。

我们发现 Toolbar 里面有三个属性是以 app 作为前缀,因为 Toolbar 在 5.0 系统才出现,以 app 为前缀名的属性是为了兼容 5.0 以下的系统 。

咱们一个个分析,先讲下这个属性

这个根据项目需求,我们自定义的 Toolbar 属性。关键点:因为我们 App 的主题是浅色的主题 "Theme.AppCompat.Light.NoActionBar" ,所以 Toolbar 中,我们继承了 parent="ThemeOverlay.AppCompat.Dark.ActionBar" , 如果 Toolbar 不用深色的主题,标题栏的字体之类看不清楚。

见名知意,这是 PopWindow 的主题,由于我们 ActionBar 设置的是深色的,默认情况下, PopWindow 和 ActionBar 的主题是统一的,但 PopWindow 的深色主题和整个 App 的整体颜色风格太不搭,所以我们需要将主题改成和 App 风格一致。

以上属性都是根据项目需求设定的,可加可不加, Toolbar 的可定制性很强~

这样我们就做到了,隐藏 ActionBar,使用 Toolbar 了。 注意:标题栏是默认在左上角的,并没有居中

1.先自定义标题栏,让标题居中

2.在 Toolbar 上添加几个按钮,先在 res 目录下新建一个文件夹: Menu ,创建一个 toolbar_menu.xml 文件

在MainActivity 重写 onCreateOptionsMenu 、onOptionsItemSelected 方法

Fragment是Android里面中一个非常灵巧的设计,它可以看做ui模块,由活动托管。熟练的使用它们能优雅的实现很复杂的界面,而且用它们编写UI界面,相对于用一个个Activity所消耗内存少得多,而且切换很流畅,可以参考知乎客户端。

但是,Fragment使用过程中会出现一些小问题,这里讲如何在Fragment中添加menu。我们都知道在活动中添加menu只用编写好menu,在onCreateOptionsMenu中加载,并在onOptionsItemSelected中处理点击事件就可以了,按照这个流程先试下

首先编写menu.xml

这里只添加一个设置的menu item

然后要加载menu需要toolbar或actionbar,这里分两种情况:

然后再调用onCreateOptionsMenu加载到toolbar上

运行一下,你会发现两种情况下menu都没加载出来。原来要在fragment中加载menu还需在其onCreate中加一句 setHasOptionsMenu(true),用于让活动知道有menu要加载

现在menu加载出来了

然后重写onOptionsItemSelected处理点击事件

现在就大功告成了吗,然而运行后会发现无论怎么点击onOptionsItemSelected都没被调用。可以再android training中找到原因

http://developer.android.com/guide/topics/ui/actionbar.html

也就是说在虽然在fragment中重写onOptionsItemSelected,但系统会在activity中先调用onOptionsItemSelected,而活动中默认都消耗了点击事件,fragment中因此无法处理点击。所以要先在托管碎片的活动中讲frament中处理的menu item返回false,让点击事件能穿到fragment的onOptionsItemSelected中

总结下

要在fragment添加menu需要以下步骤:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11366486.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存