Android SearchView 图标作为搜索按钮
Android SearchView icon as search button
我有 SearchView,通过在软键盘中输入 ENTER 可以很好地工作,我希望搜索输入中显示的搜索图标也可以用作搜索按钮,如下图所示:(这与样式无关,只是让放大镜图标可点击)
可能吗?
最后我可以通过 R.id.search_mag_icon
访问搜索视图中的默认 mag 图标并在其上设置 OnClickListener 来解决这个问题。它不是干净的代码,但至少它对我有用。
搜索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));
}
}
我有 SearchView,通过在软键盘中输入 ENTER 可以很好地工作,我希望搜索输入中显示的搜索图标也可以用作搜索按钮,如下图所示:(这与样式无关,只是让放大镜图标可点击)
可能吗?
最后我可以通过 R.id.search_mag_icon
访问搜索视图中的默认 mag 图标并在其上设置 OnClickListener 来解决这个问题。它不是干净的代码,但至少它对我有用。
搜索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));
}
}