安卓小说阅读器实现之二 搜索界面的实现与优化

时间:2022-02-08 22:38:45

现在很多应用都有搜索功能,使用系统自带的搜索控件可以很好的满足,但是在界面布局上要做一些定制化时,就需要做出合理的设置,比如实现下面的搜索界面:

安卓小说阅读器实现之二 搜索界面的实现与优化

安卓小说阅读器实现之二 搜索界面的实现与优化

击第一个界面的搜索按钮后,弹出新的搜索界面,且希望弹出的搜索界面的搜索框是展开的,并不出现软键盘,这样可以完整呈现整个搜索界面。

废话不多说,直接上代码

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        super.onCreateOptionsMenu(menu);

        final SearchView searchView = getSearchView();
        searchView.setSuggestionsAdapter(null);     //不显示提示字符串
        searchView.setSubmitButtonEnabled(false);   //不显示搜索按钮
        searchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                mSearchView.setQuery("",false);
                return true;
            }
        });
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                SearchPage.this.finish();
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                return false;
            }
        });
        searchView.setFocusable(false);   //初始化时关闭软键盘(需配合onCreateOptionsMenu中的clearFocus()函数使用才能生效)
        return true;
    }
	
	//重写searchView的createSearchMenu(Menu menu)方法
	@Override
    protected void onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.search_item_view, menu);
        mSearchItem = menu.findItem(R.id.action_mysearch);

        // Associate searchable configuration with the SearchView
        if (isFroyoOrNewer()) {
            mSearchView = (SearchView) MenuItemCompat.getActionView(mSearchItem);
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));            
            mSearchView.setIconified(false);	//设置搜索框只有扩展状态
            mSearchView.clearFocus();			//初始化时关闭软键盘
        }
    }
比较不好实现的是初始化的时候如何不显示软键盘,小星查了良久也没有找到好的方法,最后歪打正着试出来了,如代码注释所示。
搜索按钮的xml文件如下:
 
 

就是这么简单!

大家如有问题可留言讨论哈~


该方法已经在我们的小说阅读软件淘小说中实现,

大家多多支持哈~后续会有更多干货出来哦~