有些時候,我們想要自定義標題欄,比如在標題欄上放個 搜索 的SearchView。
當然就是隱藏原本自帶的標題欄咯,先在style.xml定義一下樣式:
然後在要自定義標題欄的activity裏來使用這個主題,在manifest.xml中找到這個activity來設置theme:
接着,在這個activity對應的layout佈局文件中 放一個ToolBar組件,以此來替代自帶的 主題欄:
然後在這個activity裏來設置 隱藏自帶的標題欄 並 顯示自己的ActionBar。
(requestWindowFeature 必須寫在 setContentView的前面)
這樣就可以顯示定義的ToolBar啦。
現在我們來寫一個 帶搜索功能的 標題欄:
1. 在style.xml定義樣式:
2. 在manifest.xml 找到這個activity,設置它的theme
3. 在這個activity對應的 layout佈局文件中定義一個 toolbar
4. 在menu.xml中定義一個searchView的item
5.在activity.java裏面設置隱藏自帶狀態欄,顯示自己的ToolBar,並在 onCreateOptionsMenu 裏面設置SearchView
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_menu,menu); //search_menu是在menu裏定義的,
MenuItem item = menu.findItem(R.id.search_view_menu); //search_menu.xml的一個對應的item的id
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
//一進入便自動獲得焦點
searchView.setIconified(false);
//true爲讓SearchView顯示爲一個 搜索圖標,點擊才展開輸入框
searchView.setIconifiedByDefault(false);
//顯示提交按鈕
searchView.setSubmitButtonEnabled(true);
searchView.setQueryHint("輸入關鍵字搜索");//顯示提示
//設置SearchView的 EditTxt, search_src_text爲自帶的id標誌
SearchView.SearchAutoComplete st = searchView.findViewById(R.id.search_src_text);
st.setHintTextColor(getResources().getColor(android.R.color.white)); //設置銀色
st.setTextColor(getResources().getColor(android.R.color.white));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) { //搜索提交
key = query;
mBookInfos.clear();
search(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
emm,就這樣就可以啦