本文主要是介绍android笔记-toolbar,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ToolBar是Android 5.0推出的一个新的导航控件用于取代之前的ActionBar。ActionBar由于其设计原因,只能位于Activity的顶部,从而不能实现一些MaterialDesign的效果。ToolBar的强大之处在于不仅继承ActionBar的所有功能,而且很灵活,可以配合其他控件完成一些MaterialDesign的效果。
一、ToolBar的使用
1、引入support v7支持包
官方考虑到仍有一部分用户的手机版本号低于5.0,所以,ToolBar也放进了support v7包内,使得低版本的系统也能使用上ToolBar。所以为了支持低版本需要引入support v7支持包。
build.gradle内输入如下代码:
dependencies { compile 'com.android.support:appcompat-v7:23.1.1'
}
2、更改主题
任何一个新建的项目默认都显示ActionBar。为了能够正常使用ToolBar,我们需要隐藏原来的ActionBar,这个可以在主题中修改,在values/styles.xml中做出如下修改:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="colorControlNormal">@color/grey</item><item name="colorControlActivated">@color/blue_black</item></style>
3、布局文件定义
<android.support.v7.widget.Toolbarandroid:id="@+id/tool_bar"android:layout_width="match_parent"android:layout_height="wrap_content"></android.support.v7.widget.Toolbar>
4、代码设置
具体含义看注释。
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);// 设置标题toolbar.setTitle("title");// 设置子标题toolbar.setSubtitle("SubTitle");// 设置图标toolbar.setLogo(R.drawable.ic_launcher);// 将ToolBar传入作为ActionBarsetSupportActionBar(toolbar);// 设置导航图标toolbar.setNavigationIcon(R.drawable.icon_plus);// 设置导航图标点击监听toolbar.setNavigationOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(ToolbarTestActivity.this, "Navigation click", Toast.LENGTH_SHORT).show();}});
效果如下:
5、颜色更改
以前ActionBar上文字的颜色一般是白色,但是上图中文字是黑色。这是为什么呢?
因为style中app的主题设置的是淡色主题,因此ToolBar也是淡色主题,而ToolBar上面的元素会用深色系(为了和主题颜色区分,才能看得出来)。为了让ToolBar使用深色主题,我们为ToolBar设置android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"。同时为ToolBar设置背景android:background="@color/colorPrimary"(为了美观),效果如下:
但是设置成深色主题后也会又一个问题:如果ToolBar中有菜单按钮,那么弹出的菜单项也是深色主题,十分难看。可以通过app:popupTheme属性单独将菜单项设置为淡色主题。
app:popupTheme="@style/Theme.AppCompat.Light"
6、添加菜单选项
一般导航条,在其右侧都会有菜单选项 。这里和ActionBar是一样的。
1)、在res->menu目下新建toolbar_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><itemandroid:id="@+id/menu_item1"android:icon="@drawable/app_poslogon"android:title="签到"app:showAsAction="always|withText"/><itemandroid:id="@+id/menu_item2"android:icon="@drawable/app_query"android:title="查询"app:showAsAction="always"/><itemandroid:id="@+id/menu_item3"android:icon="@drawable/app_setting"android:title="设置"app:showAsAction="never"/>
</menu>
2)、在Activity中,重写onCreateOptionsMenu()方法,把菜单加载进去。
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.toolbar_menu, menu);return true;}
效果如下:
3)、添加点击事件
方式一、在Activity中,重写onOptionsItemSelected()方法
@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.menu_item1:Toast.makeText(this, "签到", Toast.LENGTH_SHORT).show();break;case R.id.menu_item2:Toast.makeText(this, "结算", Toast.LENGTH_SHORT).show();break;case R.id.menu_item3:Toast.makeText(this, "设置", Toast.LENGTH_SHORT).show();break;}return true;}
方式二、使用ToolBar设置监听
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()){case R.id.menu_item1:Toast.makeText(ToolbarTestActivity.this, "签到", Toast.LENGTH_SHORT).show();break;case R.id.menu_item2:Toast.makeText(ToolbarTestActivity.this, "结算", Toast.LENGTH_SHORT).show();break;case R.id.menu_item3:Toast.makeText(ToolbarTestActivity.this, "设置", Toast.LENGTH_SHORT).show();break;}return true;}});
这篇关于android笔记-toolbar的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!