Android(安卓)v7 Toolbar的使用
Android:Toolbar
- AndroidToolbar
- 官方文档
- Overview
- layout布局
- Manifest Theme
- Java
- 相关的类
- 相关方法
- 待更新
官方文档
http://developer.android.com/intl/zh-cn/reference/android/support/v7/widget/Toolbar.html
Overview
v7下的 android.support.v7.widget.Toolbar
,与传统的ActionBar相比,ActionBar是由布局控制的不透明组件,Toolbar能够被放在内容区域的任何位置,想要使用Toolbar,则在 AppCompatActivity
中使用 setSupportActionbar()
方法则可以。
Toolbar提供了更多特性:
- navigation button:导航按钮
- logo:logo图标和描述
- title 和 subtitle:标题和子标题
- custom views:子view
- action menu:菜单
layout布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.Toolbar android:id="@+id/id_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/primary_color" android:elevation="3dp" android:minHeight="64dp" tools:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>RelativeLayout>
android:elevation
:表示阴影,在material design中View的位置由x,y确定,而现在新增了z轴方向,z的值就是view的高度(elevation),高度决定了阴影。tools:popupTheme
:用于设置Toolbar的主题,新版本22.1.x中,AppCompat 允许对 Toolbar 使用android:theme代替tool:theme,它会自动继承父视图的theme ,并且兼容所有APIv11以上的设备。ThemeOverlay
:Android 5.0引入一个全新的特性,允许你对view设置theme,这种设置会影响控件及其包含的子控件。使用AppCompat v22.1.x 后,也可以给你 layout 里的任意视图设置主题。该种实现主要是通过ContextThemeWrapper
(API v1)类包裹(wrap)了context,也就是你的Activity,通过覆盖(overlay)一个新的主题在当前Context的主题之上。这就是ThemeOverlay的命名吧。
Manifest Theme
因为使用了Toolbar替换我们的ActionBar,所以我们需要设置我们的应用的Theme:
<style name="AppTheme" parent="AppTheme.Parent" /><style name="AppTheme.Parent" parent="Theme.AppCompat"> --设置让toolbar重叠在Actionbar上--> <item name="android:windowActionModeOverlay">trueitem> <item name="windowActionModeOverlay">trueitem> <item name="android:windowActionBarOverlay">trueitem> <item name="windowActionBarOverlay">trueitem> <item name="windowNoTitle">trueitem> <item name="windowActionBar">falseitem>style>
在我们的AndroidManifest.xml中为 application
或 activity
指定 android:theme="@style/AppTheme"
Java
public class MainActivity extends AppCompatActivity { private Toolbar mToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mToolbar = (Toolbar) findViewById(R.id.id_toolbar); if(mToolbar != null){ setSupportActionBar(mToolbar); } }}
相关的类
- class Toolbar.LayoutParams
- Toolbar子view的布局信息
- interface Toolbar.OnMenuItemClickListener
- 用于设置菜单按钮点击的事件监听器
相关方法
- 添加Menu:
inflateMenu(int)
传入R.menu.menu_main菜单文件id参数,能够生成对应的菜单:
<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=".MainActivity"> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" /> <item android:id="@+id/action_exit" android:orderInCategory="100" android:title="@string/action_exit" app:showAsAction="never" />menu>
设置按钮的响应事件:
mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { int id = menuItem.getItemId(); if (id == R.id.action_settings) { } else if(id == R.id.action_exit) { finishActivty(); } return false; } }); }
- 添加返回按钮:
setDisplayHomeAsUpEnabled(boolean)
//添加返回按钮setSupportActionBar(mToolbar);getSupportActionBar().setDisplayHomeAsUpEnabled(true);//返回按钮添加点击响应时间mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { }});
待更新…
更多相关文章
- Android学习笔记之——UI组件
- Android(安卓)Button按钮两个页面切换
- Android(安卓)undefined reference to `stderr‘
- android > TimePicker 时间设置控件
- [转]android layout布局属性
- 【转】android:windowSoftInputMode属性使用
- view属性大全
- Android设置无标题
- 安卓布局