ToolBar控件详解

在Activity中添加ToolBar
1.添加库
dependencies {
...
compile "com.android.support:appcompat-v7:18.0.+"
}
2.Activity要继承AppCompatActivity
3.设置主题
使用ToolBar,要将系统默认的ActionBar隐藏掉
<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
4.在XML添加ToolBar布局
<android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
Material Design specification 建议设置 elevation 为 4dp
Toolbar放在Activity的顶部(等于废话)
5.设置ToolBar
在Activity的onCreate()方法中,调用setSupportActionBar()方法,把我们的ToolBar对象传递进去,将我们xml中添加的ToolBar设置为我们这个Activity页面的App Bar。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
}
现在,我们的页面中,应该就会有一个App Bar了,默认情况下,这个App Bar只会显示一个App的名字和一个带有下拉选项的按钮,也可以在App Bar上添加更多的选项按钮
添加并处理一个Action
ToolBar允许在上面添加操作按钮,但是因为ToolBar上空间是有限的,如果一个程序有太多的Action,那么可以将Action添加到下拉菜单中,而不显示在ToolBar上
添加一个Action按钮
可以在XML文件中定义所有我们想添加的操作按钮和下拉列表中的行为,如果想要添加Action,可以在 res/目录下创建一个新的XML文件,添加元素。例如这样
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- "Mark Favorite", should appear as action button if possible -->
<item
android:id="@+id/action_favorite"
android:icon="@drawable/ic_favorite_black_48dp"
android:title="@string/action_favorite"
app:showAsAction="ifRoom"/>
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
app:showAsAction="never"/>
</menu>
App:showAsAction 属性是用来设置Action显示在哪,如果我们设置 app:showAsAction =”ifRoom”(示例中最常用的一种方式) ,这个Action将显示在ToolBar上,如果ToolBar上没有足够的控件,则显示在下拉菜单中。如果在程序中设置为 app:showAsAction=”never”,那么这个Action将永远显示在下拉列表中,而不会显示在ToolBar上。
响应操作(回调)
当用户选择了一个Action后,系统会回调 onOptionsItemSelected() 方法并传递 MenuItem 对象,在 onOptionsItemSelected() 的实现中,调用 MenuItem.getItemId() 方法来确定按下了哪个项目。返回的 ID 与您在相应的 元素 Android: id 属性中声明的值匹配。
例如下面
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
// User chose the "Settings" item, show the app settings UI...
return true;
case R.id.action_favorite:
// User chose the "Favorite" action, mark the current item
// as a favorite...
return true;
default:
// If we got here, the user's action was not recognized.
// Invoke the superclass to handle it.
return super.onOptionsItemSelected(item);
}
}
添加一个回到主界面的按钮
应用为了使用户可以方便的回到主界面,ToolBar可以添加一个按钮,直接返回到指定的主界面。
声明主界面(父界面)
需要在清单文件中通过设置 android: parentActivityName 属性声明,如果要支持旧版本的Android设备,需要定义 ,类似这样:
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.MyChildActivity"
android:label="@string/title_activity_child"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
使用返回按钮
若要使用返回的按钮,需要调用setDisplayHomeAsUpEnabled()方法,类似这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_child);
// my_child_toolbar is defined in the layout file
Toolbar myChildToolbar =
(Toolbar) findViewById(R.id.my_child_toolbar);
setSupportActionBar(myChildToolbar);
// Get a support ActionBar corresponding to this toolbar
ActionBar ab = getSupportActionBar();
// Enable the Up button
ab.setDisplayHomeAsUpEnabled(true);
}
添加Action Views
和上面 添加并处理一个Action 类似,只不过设置 showAsAction 为 “ifRoom|collapseActionView” 或者 “never|collapseActionView” 就可以了,类似这样
<item android:id="@+id/action_search" android:title="@string/action_search" android:icon="@drawable/ic_search" app:showAsAction="ifRoom|collapseActionView" app:actionViewClass="android.support.v7.widget.SearchView" />
这里我们添加的是一个带有搜索功能的Search按钮,如果我们要自定义一个自己的按钮,不添加 actionViewClass 即可
如果想要配置这个Action,可以在 onCreateOptionsMenu() 的回调里通过 getActionView() 获取到Search对象,类似这样:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_activity_actions, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
// Configure the search info and add any event listeners...
return super.onCreateOptionsMenu(menu);6
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# ToolBar控件
# ToolBar控件详解
# ToolBar
# android顶部(toolbar)搜索框实现代码
# Android顶部(toolbar)搜索框实现的实例详解
# Android中ActionBar和ToolBar添加返回箭头的实例代码
# Android ToolBar 修改边距的实现方法
# Android动态修改ToolBar的Menu菜单示例
# Android折叠式Toolbar使用完全解析(CollapsingToolbarLayout)
# Android自定义Toolbar使用方法详解
# Android基于Toolbar实现顶部标题栏及后退键
# 回调
# 设置为
# 自己的
# 的是
# 就会
# 放在
# 太多
# 列表中
# 菜单中
# 而不
# 只会
# 希望能
# 自定义
# 您在
# 按下
# 要将
# 在上面
# 谢谢大家
# 方法来
# 若要
相关文章:
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何选择适配移动端的WAP自助建站平台?
定制建站哪家更专业可靠?推荐榜单揭晓
建站主机核心功能解析:服务器选择与网站搭建流程指南
宁波自助建站系统如何快速打造专业企业网站?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
潮流网站制作头像软件下载,适合母子的网名有哪些?
,网站推广常用方法?
深圳网站制作的公司有哪些,dido官方网站?
测试制作网站有哪些,测试性取向的权威测试或者网站?
如何通过cPanel快速搭建网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
宝塔建站助手安装配置与建站模板使用全流程解析
再谈Python中的字符串与字符编码(推荐)
建站之星北京办公室:智能建站系统与小程序生成方案解析
太原网站制作公司有哪些,网约车营运证查询官网?
北京网站制作的公司有哪些,北京白云观官方网站?
如何在阿里云服务器自主搭建网站?
如何用美橙互联一键搭建多站合一网站?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
C#怎么创建控制台应用 C# Console App项目创建方法
建站之星24小时客服电话如何获取?
开封网站制作公司,网络用语开封是什么意思?
建站之星如何助力网站排名飙升?揭秘高效技巧
如何在阿里云高效完成企业建站全流程?
高防服务器租用首荐平台,企业级优惠套餐快速部署
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
利用JavaScript实现拖拽改变元素大小
建站之星代理如何优化在线客服效率?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何在宝塔面板创建新站点?
如何正确选择百度移动适配建站域名?
建站与域名管理如何高效结合?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
网站制作网站,深圳做网站哪家比较好?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
广平建站公司哪家专业可靠?如何选择?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
西安大型网站制作公司,西安招聘网站最好的是哪个?
,在苏州找工作,上哪个网站比较好?
建站之星如何修改网站生成路径?
如何在云服务器上快速搭建个人网站?
建站之星客服服务时间及联系方式如何?
建站之星如何优化SEO以实现高效排名?
建站之星云端配置指南:模板选择与SEO优化一键生成
python的本地网站制作,如何创建本地站点?
*请认真填写需求信息,我们会在24小时内与您取得联系。