在Android studio的一个新建的Activity中添加Toolbar以及相应的功能添加
2015-12-15 10:09
543 查看
Toobar一般用在实现一个APP的很多页面的标题的时候会用到,实现的方法也有很多种。
注意:Toolbar需要在工程中引入appcompat-v7的兼容包,需要使用android.support.v7.widget.Toolbar进行开发。
一.单纯的在一个Activity中添加一个Toolbar,就是用这一次,可以通过以下步骤。
1.在Activity的xml布局文件中添加如下代码:
用于引入ToolBar后两句分别用于设置背景以及返回按钮。
2.在Java文件中加入如下代码:
用于对Toolbar的声明,并且同时代替Actionbar的使用。
3.在Manifast.xml文件中加入如下代码:
这样就可以基本运行了。
提示:如果只是希望单纯的显示Toolbar的话,可以实现上面步骤。如果还需要添加其他的控件的话,最好是单独写一个Toolbar,然后引入(include),这样比较方便。比如:
back_actionbar就是上面第一条的xml文件内容。
当然,单纯的添加一个T
fc02
oolbar是不够的:还得进行更多功能的添加。
可以将Toobar做成如图所示样子。接下来我们一一实现。
从左到右依次是 up button的图标,主标题和副标题,以及标题栏按钮(用于点击,编辑等功能)。代码如下:
其中toolbar.setNavigatonIcon(R.drawable.back);必须加在setSupportActionBar();之后才会有效。否则会出现返回按钮,而不是你设置的图片。如果再加入
这句代码,用于设置这个APP的图标,加上之后会在图中的返回按钮跟主副标题之间出现这个图片,这里我没有加,有兴趣的可以试一试。
接下来实现右边的三个按钮,这里需要用到menu菜单,首先,在menu目录下建立一个menu_main.xml文件(名字可以自己起),然后xml布局如下:
其中,每一个item是一个如图右边的按钮,这里设置了三个,可以根据需要进行设置。来说说其中的属性。两个属性需要说一下,orderInCategory设置的是优先级,值越大,优先级越小。showAsAction用于设置这个图标是否显示在Toolbar上,有四个值。always:这个值会使菜单项一直显示在Toolbar上。ifRoom:如果有足够的空间,这个值会使菜单项显示在Toolbar上。never:这个值使菜单项永远都不出现在Toolbar上。withText:这个值使菜单项和它的图标,菜单文本一起显示。而如果都想显示,但是Toolbar上空间不足时,这时候优先级就用于判断究竟谁应该显示在Toolbar上,优先级高的显示,优先级低的就在overflow中隐藏起来。
然后需要在onCreateOptionsMenu()方法中将这个菜单视图显示出来:
然后,我么需要给这些按钮添加点击事件,在OnCreate()中的setSupportActionBar()之后进行设置下面代码:
用到了setOnMenuItemClickListener()方法,进而根据按钮不同的id进行不同的操作。
注意:setOnMenuItemClickListener()方法也需要添加到setSupportActionBar();之后才会有效。
最后,经过toolbar.setNavigatonIcon(R.drawable.back);设置的up
button也可以进行相应的点击事件操作。
如果希望返回按钮能够出现点击返回上一层的功能,则需要在onOptionsItemSelected函数中添加如下代码:
如果不需要返回上一层的按钮,则不需要下面这一步。
up button的id为android.R.id.home,可以在判断id之后加入相应的代码进行跳转等功能。我在这里加finish(),用于退出返回上一页。
二.如果想写一个Toolbar作为每个Activity页面的标题,其余的页面都可以复用这一个作为自己的标题的话,可以通过以下步骤实现:
1.新建一个xml文件,加入如下代码:
在这个页面中,只放入一个TextView实现这个标题,当然同时也可以加入返回按钮之类的,这些都可以自己添加。然后在需要标题的Activity的xml的布局中引入这个布局就好。
同时,在Manifest.xml文件中将这个Activity的theme属性修改成没有Actionbar的
然后,就可以通过这个TextView的id在代码中修改标题的内容,颜色等属性,可在onCreate()中加入。
这样,很多界面就都可以使用这个标题布局了。
注意:Toolbar需要在工程中引入appcompat-v7的兼容包,需要使用android.support.v7.widget.Toolbar进行开发。
一.单纯的在一个Activity中添加一个Toolbar,就是用这一次,可以通过以下步骤。
1.在Activity的xml布局文件中添加如下代码:
<android.support.v7.widget.Toolbar android:id="@+id/toolbarbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:navigationIcon="?attr/homeAsUpIndicator"/>
用于引入ToolBar后两句分别用于设置背景以及返回按钮。
2.在Java文件中加入如下代码:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarbar); setSupportActionBar(toolbar);
用于对Toolbar的声明,并且同时代替Actionbar的使用。
3.在Manifast.xml文件中加入如下代码:
<activity android:name=".ContentActivity" android:theme="@style/AppTheme.NoActionBar"> </activity>
这样就可以基本运行了。
提示:如果只是希望单纯的显示Toolbar的话,可以实现上面步骤。如果还需要添加其他的控件的话,最好是单独写一个Toolbar,然后引入(include),这样比较方便。比如:
<include android:id="@+id/toolbar" layout="@layout/back_actionbar" />
back_actionbar就是上面第一条的xml文件内容。
当然,单纯的添加一个T
fc02
oolbar是不够的:还得进行更多功能的添加。
可以将Toobar做成如图所示样子。接下来我们一一实现。
从左到右依次是 up button的图标,主标题和副标题,以及标题栏按钮(用于点击,编辑等功能)。代码如下:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle("MyApp");//设置主标题名称 toolbar.setSubtitle("电影");//设置副标题名称 setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.back);//设置up button的按钮
其中toolbar.setNavigatonIcon(R.drawable.back);必须加在setSupportActionBar();之后才会有效。否则会出现返回按钮,而不是你设置的图片。如果再加入
toolbar.setLogo(R.drawable.ic_launcher);
这句代码,用于设置这个APP的图标,加上之后会在图中的返回按钮跟主副标题之间出现这个图片,这里我没有加,有兴趣的可以试一试。
接下来实现右边的三个按钮,这里需要用到menu菜单,首先,在menu目录下建立一个menu_main.xml文件(名字可以自己起),然后xml布局如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.cnlive.recyclerview.MainActivity"> <item android:id="@+id/home_live" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="ifRoom" android:icon="@drawable/home_live_sel"/> <item android:id="@+id/btn_grade" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="ifRoom" android:icon="@drawable/btn_grade_sel"/> <item android:id="@+id/btn_like" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="ifRoom" android:icon="@drawable/btn_like_sel"/> </menu>
其中,每一个item是一个如图右边的按钮,这里设置了三个,可以根据需要进行设置。来说说其中的属性。两个属性需要说一下,orderInCategory设置的是优先级,值越大,优先级越小。showAsAction用于设置这个图标是否显示在Toolbar上,有四个值。always:这个值会使菜单项一直显示在Toolbar上。ifRoom:如果有足够的空间,这个值会使菜单项显示在Toolbar上。never:这个值使菜单项永远都不出现在Toolbar上。withText:这个值使菜单项和它的图标,菜单文本一起显示。而如果都想显示,但是Toolbar上空间不足时,这时候优先级就用于判断究竟谁应该显示在Toolbar上,优先级高的显示,优先级低的就在overflow中隐藏起来。
然后需要在onCreateOptionsMenu()方法中将这个菜单视图显示出来:
public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; }
然后,我么需要给这些按钮添加点击事件,在OnCreate()中的setSupportActionBar()之后进行设置下面代码:
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { String msg = ""; switch (item.getItemId()) { case R.id.home_live: msg = "您已经点播!"; break; case R.id.btn_grade: msg = "您已经编辑!"; break; case R.id.btn_like: msg = "您已经收藏!"; break; } Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); return true; } });
用到了setOnMenuItemClickListener()方法,进而根据按钮不同的id进行不同的操作。
注意:setOnMenuItemClickListener()方法也需要添加到setSupportActionBar();之后才会有效。
最后,经过toolbar.setNavigatonIcon(R.drawable.back);设置的up
button也可以进行相应的点击事件操作。
如果希望返回按钮能够出现点击返回上一层的功能,则需要在onOptionsItemSelected函数中添加如下代码:
如果不需要返回上一层的按钮,则不需要下面这一步。
public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==android.R.id.home){ finish(); } return super.onOptionsItemSelected(item); }
up button的id为android.R.id.home,可以在判断id之后加入相应的代码进行跳转等功能。我在这里加finish(),用于退出返回上一页。
二.如果想写一个Toolbar作为每个Activity页面的标题,其余的页面都可以复用这一个作为自己的标题的话,可以通过以下步骤实现:
1.新建一个xml文件,加入如下代码:
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="50dp" android:background="@color/lightcoral"> <TextView android:id="@+id/toolbar_title" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:maxLines="1" android:textColor="@android:color/black" android:textSize="16sp" tools:text="标题"/> </android.support.v7.widget.Toolbar>
在这个页面中,只放入一个TextView实现这个标题,当然同时也可以加入返回按钮之类的,这些都可以自己添加。然后在需要标题的Activity的xml的布局中引入这个布局就好。
<include android:id="@+id/toolbar" layout="@layout/title_main" />
同时,在Manifest.xml文件中将这个Activity的theme属性修改成没有Actionbar的
android:theme="@style/AppTheme.NoActionBar"
然后,就可以通过这个TextView的id在代码中修改标题的内容,颜色等属性,可在onCreate()中加入。
if(title!=null){ title.setText("心动应用"); title.setTextColor(this.getResources().getColor(R.color.white));
这样,很多界面就都可以使用这个标题布局了。
相关文章推荐
- Android-Dialog对话框进出场动画基础例子
- Dalvik虚拟机的堆内存溢出问题
- Android Studio鼠标移到类或者方法上面显示方法注释doc
- Android 设置开放隐性启动Intent
- android设置屏幕长亮方法
- android开源数据绑定框架android-databinding
- Android 知识图谱
- android保存文件到SD卡中
- Android SQLiteOpenHelper源码解读
- Android触摸事件
- Android编程中的四大基本组件与生命周期详解
- Android客户端与服务器交互中的token
- Android dex分包方案
- Android开发之NFC介绍及应用
- android中的ToggleButton
- Android Studio添加源码Lib
- Android Studio中获取sha1证书指纹数据的方法
- Android 之流媒体播放器,广播侧下方这么简单。
- Android-BroadcastReceiver注册方式
- Android中3种时间获取方法的差异