有没有人知道如何隐藏AppCompat v21 searchview中的后退按钮? (绿线概述)
我经常搜索但找不到任何有用的东西。
menu_main.xml:
<item android:id="@+id/search"
android:title="@string/search_title"
app:showAsAction="always|collapseActionView"
android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
android:orderInCategory="300"
app:actionViewClass="android.support.v7.widget.SearchView" />
<item android:id="@+id/action_home"
android:title="Home"
android:icon="@drawable/v_home"
app:showAsAction="always"
android:orderInCategory="180"/>
<item android:id="@+id/action_favorites"
android:title="Favorites"
android:icon="@drawable/v_favorites"
app:showAsAction="always" />
MainActivity:
@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);
firstMenu = menu;
searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
MenuItem searchItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(true);
searchView.setActivated(true);
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menuItemsVisibility(false);
}
});
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
menuItemsVisibility(true);
return false;
}
});
return true;
}
@Override
public void onBackPressed() {
menuItemsVisibility(true);
super.onBackPressed();
}
// setting visibility of menu items on search
private void menuItemsVisibility(boolean visibility) {
MenuItem homeItem = firstMenu.findItem(R.id.action_home);
MenuItem favoriteItem = firstMenu.findItem(R.id.action_favorites);
MenuItem otItem = firstMenu.findItem(R.id.action_ot);
MenuItem ntItem = firstMenu.findItem(R.id.action_nt);
homeItem.setVisible(visibility);
favoriteItem.setVisible(visibility);
otItem.setVisible(visibility);
ntItem.setVisible(visibility);
}
注意:行为showAsAction:始终并使用方法menuItemsVisibility()来调整工具栏项的可见性是有意的。
另一个注意事项:MainActivity扩展了ActionBarActivity,它还实现了ObservableScrollView库中的ObservableScrollViewCallbacks实现。
答案 0 :(得分:5)
将app:showAsAction =“always | collapseActionView”更改为app:showAsAction =“always”
答案 1 :(得分:2)
使用方法:
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
从操作栏中删除主页按钮。
答案 2 :(得分:1)
这不是完全安全的方法,因为后退按钮(导航向上)没有id。但是,如果您将AppCompat与工具栏一起使用,则可以使用此代码来查找它。它应该是布局中的第一个。
int count = this.getToolbar().getChildCount();
for(int i = 0; i < count; ++i) {
View v = this.getToolbar().getChildAt(i);
if(v instanceof ImageButton) {
return (ImageButton)v;
}
}
如果要更改该按钮的drawable,请在onPrepareOptionsMenu中调用此方法。