菜单文件和SearchView

invalidateOptionsMenu();使原填充的菜单项无效,当用户再次访问菜单时,再次调用onCreateOptionsMenu(Menu menu)。如果我们要每次访问都重新对菜单进行处理,使用onPrepareOptionsMenu()来替代onCreateOptionsMenu()

菜单文件和SearchView:搜索框 的使用
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.actions,menu);
    SearchView searchView = (SearchView) menu.findItem(R.id.app_bar_search).getActionView();
    searchView.setOnQueryTextListener(new QueryTextListener());
    return true;
}
public class QueryTextListener  implements SearchView.OnQueryTextListener{
    @Override
    public boolean onQueryTextSubmit(String query) {
        Toast.makeText(ActionBarUseageActivity.this, "Searching for: " + query + "...", Toast.LENGTH_SHORT).show();
        return true;
    }
    @Override
    public boolean onQueryTextChange(String newText) {
        newText = newText.isEmpty() ? "" : "Query so far: " + newText;
        tvSearchPre.setText(newText);
        return true;
    }
}

    
    
    
        
            
            
        
    

另外的用法
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    //将搜索框加入ActionBar
    MenuItem item = menu.add("Search");
    //设置SearchView的图标
    item.setIcon(android.R.drawable.ic_menu_search);
    //设置ActionItem的显示方式
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM|MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
    //使用自定义的SearchView以便更好的控制
    mSearchView = new MySearchView(getActivity());
    //设置文本改变的监听器
    mSearchView.setOnQueryTextListener(this);
    //设置可删除文本的监听器
    mSearchView.setOnCloseListener(this);
    //设置图标是否显示在文本的旁边,还是作为背景
    mSearchView.setIconifiedByDefault(true);
    //将SearchView作为ActionItem的选项
    item.setActionView(mSearchView);
}

你可能感兴趣的:(菜单文件和SearchView)