SearchView 主题更改
SearchView theme changing
我的搜索视图有问题。
我有 2 个主题,当我第一次接触 searchview 时,我看到了丑陋的第一张图片。但是当我再次进入searchview时,我从2张图片中得到了很好的主题。
我总是想走第二条路...
知道为什么会这样吗?
这是我初始化搜索视图的代码:
private void setupSearchView(MenuItem searchItem) {
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchItem.getActionView();
setupSearchView(searchItem);
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
startSearch(null,true,null,false);
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return true;
}
谢谢!
编辑
在@huangming 的帮助下,我编辑了我的代码。现在它就像一个魅力:)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId) {
case R.id.search:
onSearchRequested();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
然后在我的 onCreateOptionsMenu(菜单菜单)
我必须进行编辑,因为我想在 Bundle 中发送自定义值供我的 SearchActivity 进行管理。
final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
MenuItem searchItem = menu.findItem(R.id.action_search);
//mSearchView = (SearchView) searchItem.getActionView();
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
setupSearchView(searchItem);
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
Bundle b = new Bundle();
final SharedPreferences prefs = getSharedPreferences("pref", Context.MODE_PRIVATE);
int somevalue = prefs.getInt("value", 0);
b.putInt("value", somevalue);
searchManager.startSearch("", true, searchManager.getGlobalSearchActivity(), b, false);
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
你有下面的代码吗?
尝试删除代码 onSearchRequested();
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId) {
case R.id.search:
onSearchRequested();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我的搜索视图有问题。
我有 2 个主题,当我第一次接触 searchview 时,我看到了丑陋的第一张图片。但是当我再次进入searchview时,我从2张图片中得到了很好的主题。
我总是想走第二条路... 知道为什么会这样吗?
这是我初始化搜索视图的代码:
private void setupSearchView(MenuItem searchItem) {
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchItem.getActionView();
setupSearchView(searchItem);
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
startSearch(null,true,null,false);
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return true;
}
谢谢!
编辑
在@huangming 的帮助下,我编辑了我的代码。现在它就像一个魅力:)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId) {
case R.id.search:
onSearchRequested();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
然后在我的 onCreateOptionsMenu(菜单菜单) 我必须进行编辑,因为我想在 Bundle 中发送自定义值供我的 SearchActivity 进行管理。
final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
MenuItem searchItem = menu.findItem(R.id.action_search);
//mSearchView = (SearchView) searchItem.getActionView();
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
setupSearchView(searchItem);
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
Bundle b = new Bundle();
final SharedPreferences prefs = getSharedPreferences("pref", Context.MODE_PRIVATE);
int somevalue = prefs.getInt("value", 0);
b.putInt("value", somevalue);
searchManager.startSearch("", true, searchManager.getGlobalSearchActivity(), b, false);
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
你有下面的代码吗?
尝试删除代码 onSearchRequested();
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId) {
case R.id.search:
onSearchRequested();
return true;
default:
return super.onOptionsItemSelected(item);
}
}