简体   繁体   English

Android SearchView图标作为搜索按钮

[英]Android SearchView icon as search button

I Have SearchView that works well by inputting ENTER in soft keyboard, I want that search icon shown in search input also work as search button, something like this image: (it is not about styling just making Magnifier icon clickable) 我有SearchView可以通过在软键盘上输入ENTER来很好地工作,我希望搜索输入中显示的搜索图标也可以用作搜索按钮,就像这样的图像:(这与样式无关,只是使放大镜图标可单击)

带有可单击的放大镜图标的搜索框

is it possible? 可能吗?

finally I could solve this by getting access to default mag icon in search view by R.id.search_mag_icon and setting OnClickListener on it. 最后,我可以通过访问R.id.search_mag_icon搜索视图中的默认mag图标并在其上设置OnClickListener来解决此问题。 it is not clean code but at least it work for me. 这不是干净的代码,但至少对我有用。

search activity: 搜索活动:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);
    final Intent intent = getIntent();
    listView=(ListView)findViewById(R.id.simple_list);
    final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    searchView = (SearchView) findViewById(R.id.sv);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    ImageView magImage = (ImageView) findViewById(R.id.search_mag_icon);
    magImage.setImageResource(R.drawable.search);
    magImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intentSelected = new Intent(SearchActivity2.this, SearchActivity2.class);
            intentSelected.setAction(Intent.ACTION_SEARCH);
            CharSequence query = searchView.getQuery();
            intentSelected.setData(Uri.parse( query.toString() ));
            intentSelected.putExtra("QUERY", query.toString());
            startActivity(intentSelected);
            hideKeyboard(SearchActivity2.this);
            finish();
        }
    });
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        String button_query = intent.getStringExtra("QUERY");
        if(query==null && button_query!=null)
            query = button_query;
        if(query!=null) {
            searchView.setQuery(query, false);
            headers = db.doSearch(query);
            dataModels = new ArrayList<>();
            dataModels = setListItems(headers);
            adapter = new CustomListAdapter(dataModels, getApplicationContext());
            listView.setAdapter(adapter);
            listView.setEmptyView(findViewById(R.id.iv_noresult));
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM