- 新建一個(gè)菜單(在res目錄下新建menu目錄)
menu_search.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/app_bar_search"
android:icon="@drawable/ic_search_black_24dp"
android:title="Search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="ifRoom"/>
</menu>
這個(gè)item不用手寫,可以直接在design界面拖入
其中showAsAction有以下值:
1民泵、always:使菜單項(xiàng)一直顯示在ToolBar上迄汛。
2捍壤、ifRoom:如果有足夠的空間,這個(gè)值會使菜單項(xiàng)顯示在ToolBar上鞍爱。
3鹃觉、never:使菜單項(xiàng)永遠(yuǎn)都不出現(xiàn)在ToolBar上,在…的子項(xiàng)中顯示。
4睹逃、withText:使菜單項(xiàng)和它的圖標(biāo)盗扇,菜單文本一起顯示。
actionViewClass="android.widget.SearchView"表示點(diǎn)擊后顯示一個(gè)SearchView
- 在Activity.onCreateOptionsMenu()中加載這個(gè)菜單
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 獲取一個(gè)帶有search的menu
getMenuInflater().inflate(R.menu.menu_search, menu);
// 設(shè)置SearchView
MenuItem menuItem = menu.findItem(R.id.app_bar_search);
if (menuItem != null) {
// 獲取到SearchView(必須在xml item中設(shè)置app:actionViewClass="android.widget.SearchView")
SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setQueryHint("熱門新聞");
// 在右側(cè)添加提交按鈕
searchView.setSubmitButtonEnabled(true);
// 根據(jù)源碼獲取子View的id沉填,然后獲取子View來設(shè)置其屬性
int src_text_id = searchView.getContext().getResources().getIdentifier(
"android:id/search_src_text", null, null);
TextView textView = searchView.findViewById(src_text_id);
textView.setTextColor(Color.BLUE);
int layout_id = searchView.getContext().getResources().getIdentifier(
"android:id/search_plate", null, null);
View view = searchView.findViewById(layout_id);
view.setBackgroundColor(Color.WHITE);
}
return true;
}
- 這時(shí)還是不會顯示疗隶,需要在Activity.onCreate()中添加Toolbar
setSupportActionBar(mToolbar);