我忙于将现有的应用程序更改为材料设计,但我在ActionBar中的菜单项出现问题。
首先,我在一些活动中使用了searchview,但我已经读过你需要在searchview菜单xml中使用自定义前缀。所以我做了:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search_light"
android:title="Search"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>
但每次我收到错误: &#34;不使用appcompat库&#34;
时应使用android:showAsAction如果我将app:showAsAction="ifRoom|collapseAction"
更改为android:showAsAction="ifRoom|collapseActionView"
我没有得到一个搜索视图,它占据了操作栏的整个长度,只是右侧角落放置了一些奇怪的方块。这是我的onCreateOptionsMenu代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.searchview, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
final SearchView search = (SearchView) MenuItemCompat.getActionView(searchItem);
if(search != null)
{
search.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(search.getWindowToken(), 0);
try {
new LoadResultsTask().execute(URLEncoder.encode(query, "UTF-8"));
} catch (UnsupportedEncodingException e) {
Toast.makeText(IndexerOverviewActivity.this, "Could not parse Query", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
return true;
}
@Override
public boolean onQueryTextChange(String search) {
return true;
}
});
}
search.setIconifiedByDefault(false);
return super.onCreateOptionsMenu(menu);
}
我注意到,当我在设备上启动应用程序时,android:showsAsAction="always"
的所有操作栏菜单项都显示为android:showsAsAction="never"
。所以我的第一个猜测是它与菜单xml文件中使用的前缀有关。
答案 0 :(得分:0)
Pffff,经过一次“干净”之后,现在效果很好......
我花了2个小时来解决这个问题。