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中为 applicationactivity 指定 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
用于设置菜单按钮点击的事件监听器

相关方法

  • 添加MenuinflateMenu(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) {    }});

待更新…

更多相关文章

  1. Android学习笔记之——UI组件
  2. Android(安卓)Button按钮两个页面切换
  3. Android(安卓)undefined reference to `stderr‘
  4. android > TimePicker 时间设置控件
  5. [转]android layout布局属性
  6. 【转】android:windowSoftInputMode属性使用
  7. view属性大全
  8. Android设置无标题
  9. 安卓布局

随机推荐

  1. Android(安卓)WebView安全研究
  2. 实现ListView的弹性滚动
  3. eclipse build 不生成apk的办法
  4. Nexus s Android(安卓)4.1.1 通过USB共享
  5. Android建立用户接口
  6. android开发训练——网络操作(一)连接网络
  7. Android(安卓)JNI(JNI(JAVA同C++配合使用)
  8. 使用x5cloud云平台来做网络彩讯---------
  9. Android设备上使用WiFinspect抓取网络通
  10. android Service--服务