--------------------------------------
首先, 我在這個 Activity的Layout上(檔名假設為: activity_dblist.xml)加入了ToolBar, 如下:
<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"><androidx.appcompat.widget.Toolbar android:id="@+id/dbListToolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:contentInsetStart="1dp" app:popupTheme="@style/AppTheme.PopupOverlay" /></com.google.android.material.appbar.AppBarLayout>
同時在onCreate()中要增加這兩行, 才會出現新增的ToolbarToolbar toolbar = findViewById(R.id.dbListToolbar); setSupportActionBar(toolbar);
--------------------------------------
但是這樣會出現兩個Toolbar(可能一個叫ToolBar, 一個叫APPbar?), 所以必需在 AndroidManifest.xml中修改這個Activity的屬性, 增加 android:theme="@style/AppTheme.NoActionBar" , 如下:<activity android:name=".DBList" android:theme="@style/AppTheme.NoActionBar" />--------------------------------------
接著, 我想要在ToolBar 上增加返回的箭頭, 就必需在onCreate()中再增加這兩行getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true);可是我按下返回箭號, 卻沒有任何反應, 原來我必需要在onOptionsItemSelected(MenuItem item)中再加入if (item.getItemId()==android.R.id.home) return;
--------------------------------------
然後, 我想修改Toolbar 的Title ,不想出現app名稱, 例如想改為"資料庫", 則在 onCreate() 中要增加這一行
getSupportActionBar().setTitle("資料庫");--------------------------------------
再來, 我還想增加一些menu 選項, 那麼我還要做以下的幾件事
1. 在menu中新增一個xml (例如叫: menu_dblist.xml)
2. 覆寫onCreateOptionsMenu(), 讓optionMenu出現在Toolbar上
@Overridepublic boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_dblist, menu); return true; }--------------------------------------
說了那麼多, 總結一下全部的步驟:
1. 修改AndroidManifest.xml :
在該activity (名稱假設為: DBList) 增加一個theme屬性, 指定為 "@style/AppTheme.NoActionBar"<activity android:name=".DBList" android:theme="@style/AppTheme.NoActionBar" />2.在這個 Activity的Layout上加入了ToolBar元件(id假設為dbListToolbar):<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"><androidx.appcompat.widget.Toolbar android:id="@+id/dbListToolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:contentInsetStart="1dp" app:popupTheme="@style/AppTheme.PopupOverlay" /></com.google.android.material.appbar.AppBarLayout>
3.在這個Activity的onCreate()中增加以下程式:Toolbar toolbar = findViewById(R.id.dbListToolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setTitle("資料庫");
4.在這個Activity的onOptionsItemSelected(MenuItem item)中再加入if (item.getItemId()==android.R.id.home) return;
--------------------------------------
沒有留言:
張貼留言