Android隐藏自带标题栏,显示自定义标题栏。
程序员文章站
2024-02-05 12:09:40
...
有些时候,我们想要自定义标题栏,比如在标题栏上放个 搜索 的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,就这样就可以啦