文档章节

ToolBar和Menu的联合使用及问题

h
 hasaigi
发布于 2016/10/22 17:08
字数 752
阅读 94
收藏 0

在布局中写ToolBar属性的时候可以设置logo、title、titleTextColor、subTitle等(logo默认显示在ToolBar的左侧,title和subtitle显示在logo右侧,如果不设置subtitle,title会默认竖直居中)

所有ToolBar的功能要在前面把android改为app否则无效

第一步:

因为系统默认会给整个布局顶部添加一个ActionBar所以要让我们自己定义的ToolBar显示的话要自定义一个style让Action显示不出来,且我们定义的样式style最好继承系统默认的样式(AppTheme),自定义的style代码如下:

<style name="AppTheme.NoActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

第二部:

要在清单文件中给想要放置ToolBar的Activity添加一个主题,即在activity的“>”内部加入一行代码

<activity android:name=".MainActivity"
    android:theme="@style/AppTheme.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

红色部分即为我们为ToolBar自定义的样式

第三部:

在Activity的代码中要记得实例化ToolBar并写入一段代码,ToolBar即可实现

toolbar= (Toolbar) findViewById(R.id.toolbar_main);
setSupportActionBar(toolbar);

第四部:

如何在ToolBar的右侧添加按钮的方法

            1、ToolBar内部可以嵌套其它控件,可以理解为ToolBar本身为一个布局,里面可以添加TextView、Button之类的控件,但是用这种方法我没有实现让按钮在ToolBar右侧依次排开,也没找到好的办法实现

            2、在Activity的代码中实现Menu,Menu便会从ToolBar右侧依次排开,首先要在res文件夹下新建一个menu文件夹,再在menu文件夹下选择新建menufile代码如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_setting" android:icon="@mipmap/ic_audit"
        android:actionLayout="@layout/action_setting"
        android:title="评审" app:showAsAction="always|withText"></item>
    <item android:id="@+id/action_setting1" android:icon="@mipmap/ic_add_article" android:title="编写"
        android:actionLayout="@layout/action_setting1"
        app:showAsAction="always|withText"/>
</menu>

在上面这段代码中一个item即为一个menu,这里我新建了两个menu,必须要给menu设置id和title和showAsAction,我们可以给每一个menu设置一个新的布局,例如第一个item的actionLayout即为我给这个menu设置的布局     

            在Activity中重写onCreateOpionMenu方法,其中的R.menu.menu_main即为我们新建的menufile

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main,menu);
    return super.onCreateOptionsMenu(menu);
}

            为了实现menu的点击时间我们要在Activity中重写onOptionsItemSelected方法,代码如下:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_setting1:
            Toast.makeText(MainActivity.this, "点击了Home", Toast.LENGTH_SHORT).show();
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
           builder.setMessage("确认退出吗?");
           builder.setTitle("提示");
            builder.create().show();
            break;
        case R.id.action_setting:
            Toast.makeText(MainActivity.this, "点击了Settings菜单", Toast.LENGTH_SHORT).show();
            break;
    }
    return super.onOptionsItemSelected(item);
}

            上面的代码中的R.id.action_setting即为我们新建的menu文件中第二个item的id,这里我设置了点击menu的时候生成一个对话话框。设置完成后这两个menu即会在ToolBar的右侧依次显示,但是为什么menu会自动显示在ToolBar上不知道谁能告诉我

 

© 著作权归作者所有

h
粉丝 0
博文 1
码字总数 752
作品 0
北京
私信 提问
QQ最新版布局猜想

最近想实现类似QQ的布局,使用toolbar,tablayout,viewpager,drawerlayout等控件,碰到了一些问题。 底部按钮切换之后,每个页面头部布局不一样。使用toolbar的话,需要在每个fragment中使用单...

java9
2016/02/15
163
0
Toolbar的详细使用

Toolbar是作为5.0之后替代ActionBar的一个控件,平时也是会经常的使用toolbar这个东西,但是也只是基本的使用,太深入详细的功能也没有去尝试,最近抽时间做了一个详细的学习整理,做一个记录. 简...

大灰鸡
2017/11/20
0
0
Android Toolbar Example 示例

每个活动最顶部的那个标题栏就是 ActionBar,不过 ActionBar 由于其设计的原因,被限定只能位于活动的顶部,从而不能实现一些 Material Design 的效果,因此官方现在已经不再建议使用 Action...

xandeer
2017/10/11
0
0
Material Design 控件

只能包含一个子View,setOnRefreshListener设置下拉刷新监听 问题:以下布局会出现下拉和列表滑动冲突问题 width="matchparent"android:layoutheight="matchparent"> width="matchparent"an......

CrazyManDF
2016/03/23
250
0
Android 5.X的新特性实例

导语 Android 5.X新特性实例,理论知识戳这里。 主要内容 Android5.X切换动画 Toolbar的使用 基本的Notification 折叠式Notification 悬挂式Notification 具体内容 效果图: Android5.X切换动...

一个有故事的程序员
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
944
11
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
15
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部