ToolBar中的SearchView如何让点击之后跳转到一个新的Activity


现在在研究Toolbar,碰到一个问题。
ToolBar上有一个SearchView,就是那个放大镜,如何做才能让他像微信那样点击SearchView之后跳转到一个新的Activity(Fragment?)
加一个点击事件吗?还是Toolbar中本身就有这种属性?

新手学习中,望大神不吝赐教,谢谢!

toolbar Android

雀到今生打已迟 11 years, 2 months ago

ToolBar可以当ActionBar使用,所以当你在Activity onCreate里 setSupportActionBar(toolbar); 之后就可以直接用actionbar的操作方式了,当然,之前的那些导航是不能再用了。

SearchView这种应该是定义在menu上的,在 onCreateOptionsMenu(Menu menu) 里的inflate挂载好meunu.xml文件里以后,你可以通过 MenuItem searchViewButton = (MenuItem) menu.findItem(R.id.menu_search); 来获取到这个按键,然后你自然就可以给它绑各种事件了,比如说什么onClickListener之类的。

这样你想跳转啥activity,只要开个intent就可以跳了,一切随你自己心意。

不过一般使用SearchView都是在menu.xml里加个 android:actionViewClass="android.widget.SearchView" ,这样点击放大镜的时候只会改变actionbar的区域,算是google推荐的最佳实践。

另外还推荐 searchView.setSearchableInfo(searchManager) 来跳转到搜索结果的activity。

PS:我的微信点击SearchView貌似没有跳转,只是多了一层阴影。

图片描述

刚试了最新版微信,果然是跳转到新的Activity,应该就是这样做的


 java


 @Override
public boolean onCreateOptionsMenu(Menu menu){
    new MenuInflater(this).inflate(R.menu.yousuu_menu,menu);
    MenuItem  searchViewButton = (MenuItem) menu.findItem(R.id.menu_search);
    searchViewButton.setClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent= new Intent(MainActivity.this,SearchActivity.class);
            startActivity(intent);
        }
    });
    // others
}

实际上以前没有actionViewClass的时候大家都是这么做的。

萌萌的空幻大人 answered 11 years, 2 months ago

Your Answer