紙墨設計文檔: Toolbar
在 谷歌官方的紙墨設計文檔 中介紹如下:
Toolbar 是位于內容上方的包含功能按鈕菜單的區域。當下面的內容滾動的時候,Toobar 會遮擋下面的內容并且內容不能穿過 Toolbar。
如何使用
- 在項目的 build.gradle 文件中添加 appcompat 和 design 庫:
Java
dependencies { compile 'com.android.support:cardview-v7:X.X.X' // where X.X.X version compile 'com.android.support:design:X.X.X' // where X.X.X version }
dependencies { compile 'com.android.support:cardview-v7:X.X.X' // where X.X.X version compile 'com.android.support:design:X.X.X' // where X.X.X version }
- 你的 Activity 繼承至 android.support.v7.app.AppCompatActivity :
Java
public class MainActivity extends AppCompatActivity { ... }
public class MainActivity extends AppCompatActivity { ... }
- 在布局文件中使用 Toolbar
XHTML
<android.support.v7.widget.Toolbar android:layout_width="fill_parent" android:layout_height="?attr/actionBarSize" android:background="?colorPrimary" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
<android.support.v7.widget.Toolbar android:layout_width="fill_parent" android:layout_height="?attr/actionBarSize" android:background="?colorPrimary" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
如何修改樣式?
- 在你的 styles.xml 中定義自定義樣式:
XHTML
<style name="ToolbarTextAppearance"> <item name="android:fontFamily">sans-serif-condensed</item> <item name="android:textColor">@android:color/white</item> <item name="android:shadowDx">1</item> <item name="android:shadowDy">1</item> <item name="android:shadowRadius">2</item> <item name="android:shadowColor">?colorAccent</item> </style> <style name="ToolbarTextAppearance.Title"> <item name="android:textSize">20sp</item> </style> <style name="ToolbarTextAppearance.Subtitle"> <item name="android:textSize">14sp</item> </style> <style name="MyToolbar"> <item name="theme">@style/ThemeOverlay.AppCompat.Dark</item> <item name="android:background">?colorPrimary</item> <item name="android:elevation">4dp</item> </style>
<stylename="ToolbarTextAppearance"> <itemname="android:fontFamily">sans-serif-condensed</item> <itemname="android:textColor">@android:color/white</item> <itemname="android:shadowDx">1</item> <itemname="android:shadowDy">1</item> <itemname="android:shadowRadius">2</item> <itemname="android:shadowColor">?colorAccent</item> </style> <stylename="ToolbarTextAppearance.Title"> <itemname="android:textSize">20sp</item> </style> <stylename="ToolbarTextAppearance.Subtitle"> <itemname="android:textSize">14sp</item> </style> <stylename="MyToolbar"> <itemname="theme">@style/ThemeOverlay.AppCompat.Dark</item> <itemname="android:background">?colorPrimary</item> <itemname="android:elevation">4dp</item> </style>
- 通過 style 屬性來使用該theme,還可以通過 titleTextAppearance 和 subtitleTextAppearance 屬性來修改標題和子標題的文字樣式。
XHTML
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?actionBarSize" app:title="Toolbar" app:subtitle="Toolbars are amazing" app:titleTextAppearance="@style/ToolbarTextAppearance.Title" app:subtitleTextAppearance="@style/ToolbarTextAppearance.Subtitle" style="@style/MyToolbar" />
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?actionBarSize" app:title="Toolbar" app:subtitle="Toolbars are amazing" app:titleTextAppearance="@style/ToolbarTextAppearance.Title" app:subtitleTextAppearance="@style/ToolbarTextAppearance.Subtitle" style="@style/MyToolbar" />
帶有圖標菜單的 Toolbar
- 通過 menu.xml 來創建圖標菜單:
XHTML
<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"> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite" app:showAsAction="always"/> <item android:id="@+id/action_search" android:icon="@drawable/ic_search" app:showAsAction="always"/> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never"/> </menu>
<menuxmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite" app:showAsAction="always"/> <item android:id="@+id/action_search" android:icon="@drawable/ic_search" app:showAsAction="always"/> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never"/> </menu>
- 通過 inflateMenu 函數來使用上面定義的圖標菜單:
Java
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.inflateMenu(R.menu.main);
Toolbartoolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.inflateMenu(R.menu.main);
- 通過實現并設置 Toolbar.OnMenuItemClickListener 來處理點擊事件:
Java
public class MyActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener { ... toolbar.setOnMenuItemClickListener(this); ... @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_favorite: Toast.makeText(this, "Favorite", Toast.LENGTH_SHORT).show(); return true; case R.id.action_search: Toast.makeText(this, "Search", Toast.LENGTH_SHORT).show(); return true; } return true; }
public class MyActivityextends AppCompatActivity implements Toolbar.OnMenuItemClickListener { ... toolbar.setOnMenuItemClickListener(this); ... @Override public boolean onMenuItemClick(MenuItemitem) { switch (item.getItemId()) { case R.id.action_favorite: Toast.makeText(this, "Favorite", Toast.LENGTH_SHORT).show(); return true; case R.id.action_search: Toast.makeText(this, "Search", Toast.LENGTH_SHORT).show(); return true; } return true; }
帶有返回按鈕的 Toolbar
- 在你的 styles.xml 中定義自定義樣式:
XHTML
<style name="MyToolbar"> <item name="theme">@style/ThemeOverlay.AppCompat.Dark</item> <item name="navigationIcon">@drawable/abc_ic_ab_back_mtrl_am_alpha</item> <item name="android:background">?colorPrimary</item> <item name="android:elevation">4dp</item> </style>
<stylename="MyToolbar"> <itemname="theme">@style/ThemeOverlay.AppCompat.Dark</item> <itemname="navigationIcon">@drawable/abc_ic_ab_back_mtrl_am_alpha</item> <itemname="android:background">?colorPrimary</item> <itemname="android:elevation">4dp</item> </style>
- 通過 style 屬性來使用該theme。
XHTML
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?actionBarSize" app:title="Toolbar" app:subtitle="Toolbars are amazing" style="@style/MyToolbar" />
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?actionBarSize" app:title="Toolbar" app:subtitle="Toolbars are amazing" style="@style/MyToolbar" />
- 處理返回按鈕點擊事件。
Java
toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } });
toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } });
高度更大的 Toolbar
- 在你的 styles.xml 中定義自定義樣式:
XHTML
<style name="MyToolbar"> <item name="theme">@style/ThemeOverlay.AppCompat.Dark</item> <item name="navigationIcon">@drawable/abc_ic_ab_back_mtrl_am_alpha</item> <item name="titleMarginTop">?actionBarSize</item> <item name="android:background">?colorPrimary</item> <item name="android:elevation">4dp</item> </style>
<stylename="MyToolbar"> <itemname="theme">@style/ThemeOverlay.AppCompat.Dark</item> <itemname="navigationIcon">@drawable/abc_ic_ab_back_mtrl_am_alpha</item> <itemname="titleMarginTop">?actionBarSize</item> <itemname="android:background">?colorPrimary</item> <itemname="android:elevation">4dp</item> </style>
- 通過 style 屬性來使用該theme。
XHTML
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="112dp" app:title="Toolbar" app:subtitle="Toolbars are really cool" style="@style/MyToolbar" />
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="112dp" app:title="Toolbar" app:subtitle="Toolbars are really cool" style="@style/MyToolbar" />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!