Android隐藏自带标题栏,显示自定义标题栏。

有些时候,我们想要自定义标题栏,比如在标题栏上放个 搜索 的SearchView。

当然就是隐藏原本自带的标题栏咯,先在style.xml定义一下样式:

Android隐藏自带标题栏,显示自定义标题栏。_第1张图片

然后在要自定义标题栏的activity里来使用这个主题,在manifest.xml中找到这个activity来设置theme:

Android隐藏自带标题栏,显示自定义标题栏。_第2张图片

接着,在这个activity对应的layout布局文件中 放一个ToolBar组件,以此来替代自带的 主题栏:

Android隐藏自带标题栏,显示自定义标题栏。_第3张图片

然后在这个activity里来设置  隐藏自带的标题栏 并 显示自己的ActionBar。

requestWindowFeature 必须写在 setContentView的前面)

Android隐藏自带标题栏,显示自定义标题栏。_第4张图片

这样就可以显示定义的ToolBar啦。

现在我们来写一个 带搜索功能的 标题栏:

Android隐藏自带标题栏,显示自定义标题栏。_第5张图片

1. 在style.xml定义样式:

Android隐藏自带标题栏,显示自定义标题栏。_第6张图片

2. 在manifest.xml 找到这个activity,设置它的theme


3. 在这个activity对应的 layout布局文件中定义一个 toolbar

Android隐藏自带标题栏,显示自定义标题栏。_第7张图片

4. 在menu.xml中定义一个searchView的item

Android隐藏自带标题栏,显示自定义标题栏。_第8张图片

5.在activity.java里面设置隐藏自带状态栏,显示自己的ToolBar,并在 onCreateOptionsMenu  里面设置SearchView

Android隐藏自带标题栏,显示自定义标题栏。_第9张图片

 @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,就这样就可以啦

你可能感兴趣的:(Android知识碎碎片)