步驟1:style 設定 - 將預設的 ActionBar 拿掉
方法1:直接更改 AndroidManifest.xml
- 注意這邊是修改 application 的 theme,而不是 Activity
<application
...
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
方法2:修改 style.xml,直接改掉預設 theme
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
方法3:修改 style.xml,創建新的 theme,並修改AndroidManifest.xml
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
- AndroidManifest.xml
- 可以直接套用在 application
- 或指定特定的 Activity
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize" />
View:接在步驟2之後繼續寫
- 參考 Toolbar 範例圖片
- 有些設定會與後端 Java class 重複,擇1即可
app:popupTheme
:設置 toolbar 彈出的 menu 的 style
android:elevation
:陰影效果
app:logo
:APP 的圖示
app:navigationIcon
:設定 up button 的圖示
<android.support.v7.widget.Toolbar
...
app:title="@string/app_name"
app:titleTextColor="@android:color/white"
app:subtitle="test"
app:logo="@mipmap/ic_back"
app:navigationIcon="@mipmap/ic_drawer_home"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/AppTheme.ToolBarStyle"
app:popupTheme="@style/AppTheme.PopupOverlay" />
- 有些設定會與 View 的設定重複,擇1即可
actionMenuTextColor
:設定右上角 menu 的文字的顏色
<style name="AppTheme.ToolBarStyle">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
<item name="actionMenuTextColor">@android:color/white</item>
<item name="android:background">@color/colorPrimary</item>
<item name="android:textSize">20sp</item>
</style>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
setSupportActionBar(Toolbar toolbar)
, getSupportActionBar()
:是屬於AppCompatActivity的方法,故直接在Activity中呼叫即可
- ActionBar 常用的方法
setDisplayShowTitleEnabled()
:是否顯示Activity的標題, 副標題
setDisplayHomeAsUpEnabled()
:左上角是否顯示返回按鈕
setHomeButtonEnabled()
:左上角的圖示是否可以點擊
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.mipmap.ic_drawer_home);
toolbar.setLogo(R.mipmap.ic_launcher);
toolbar.setTitle("Title");
toolbar.setSubtitle("Subtitle");
toolbar.setTitleTextColor(...);
toolbar.setTitleTextAppearance(...);
toolbar.inflateMenu(R.menu.base_toolbar_menu);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
...
}
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
- 於 res/menu 創建一個 menu_example.xml
- showAsAction 屬性:
- ifRoom:如果ActionBar有空間,該項目放在ActionBar
- never:項目不放在ActionBar,放在最右側的選項選單
- always:項目一定放在ActionBar (不建議使用)
<?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">
<item
android:id="@id/action_search"
android:icon="@mipmap/ic_search"
android:title="@string/menu_search"
app:showAsAction="ifRoom" />
<item
android:id="@id/action_notification"
android:icon="@mipmap/ic_notifications"
android:title="@string/menu_notifications"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_item1"
android:title="@string/item_01"
app:showAsAction="never" />
<item
android:id="@+id/action_item2"
android:title="@string/item_02"
app:showAsAction="never" />
</menu>
Reference 參考資料
- Toolbar 圖片:https://blog.mosil.biz/2014/10/android-toolbar/
- Android开发:最详细的 Toolbar 开发实践总结:https://www.jianshu.com/p/79604c3ddcae
- Android Toolbar,你想知道的都在这里了:
http://yifeng.studio/2016/10/12/android-toolbar/
- 如何使用Toolbar(Actionbar)+DrawerLayout:http://givemepass.blogspot.tw/2016/07/toolbaractionbardrawerlayout.html
- appbar 官方文件:https://developer.android.com/training/appbar/setting-up.html
- Toolbar 官方文件:https://developer.android.com/reference/android/support/v7/widget/Toolbar.html
- AppCompatActivity 官方文件:https://developer.android.com/reference/android/support/v7/app/AppCompatActivity.html
- ActionBar 官方文件:https://developer.android.com/reference/android/app/ActionBar.html
- [Android] Menu xml 文件定義 − item 標籤的 android:showAsAction 屬性用途:https://dreammushroomsprogramnotes.blogspot.tw/2015/09/android-menu-xml-item_13.html
沒有留言:
張貼留言