Удалить значок/заголовок для панели действий с расширенным SearchView?
Я создал новый проект, ориентированный на api 11 и выше. У меня есть активность, где я хочу, чтобы SearchView расширялся по умолчанию:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_search, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchItem.getActionView();
mSearchView.setIconifiedByDefault(false);
}
который работает, но мне не нужен значок или заголовок на панели действий, просто searchview. Я попытался избавиться от своего названия и значка, выполнив:
getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setIcon(android.R.color.transparent);
Но моя панель действий по-прежнему имеет это дополнение слева от поискового запроса:
![enter image description here]()
Есть ли способ избавиться от него?
Спасибо
-------- Изменить --------------------
Здесь моя деятельность в полном объеме:
public class GreatAndroid extends FragmentActivity {
private SearchView mSearchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayShowHomeEnabled(false);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.menu_search, menu);
MenuItem mi = menu.findItem(R.id.action_search);
mSearchView = (SearchView) mi.getActionView();
mSearchView.setIconifiedByDefault(false);
return true;
}
}
и здесь меню xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_search"
android:title="@string/search"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView" />
</menu>
Ответы
Ответ 1
Несмотря на то, что значок прозрачен, он по-прежнему занимает пространство:
getActionBar().setIcon(android.R.color.transparent);
Удалите эту строку и добавьте:
getActionBar().setDisplayShowHomeEnabled(false);
Теперь вам нужно, чтобы SearchView занимал все свободное пространство.
Элементы действия, которые могут быть свернуты, имеют максимальную ширину. Единственным обходным решением, о котором я могу думать, является следующее:
public class GreatAndroid extends FragmentActivity {
private SearchView mSearchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setDisplayShowTitleEnabled(false);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.menu_search, menu);
MenuItem mi = menu.findItem(R.id.action_search);
mSearchView = (SearchView) mi.getActionView();
mSearchView.setIconifiedByDefault(false);
// You can use Display.getSize(Point) from API 13 onwards.
// For API 11 and 12, use Display.getWidth()
final Point p = new Point();
getWindowManager().getDefaultDisplay().getSize(p);
// Create LayoutParams with width set to screen width
LayoutParams params = new LayoutParams(p.x, LayoutParams.MATCH_PARENT);
mSearchView.setLayoutParams(params);
return true;
}
}
Хотя похоже, что все еще остается место слева, вы можете использовать mSearchView.setBackgroundColor(Color.RED);
, чтобы увидеть, что на самом деле этого нет.
Ответ 2
Я не мог заставить @Vikram awnser работать, но я нашел, что другой ответ из Stack Overflow:
Откройте файл styles.xml и добавьте ниже коды в стиле Actionbar
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <--this do the magic!
p/s: Я использую Actionbar Sherlock, и это работает просто отлично
(См. Удалить значок/логотип из панели действий на андроиде)
Ответ 3
Что касается левого дополнения, вы можете попробовать использовать collapseActionView
Вот пример меню:
<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="@android:drawable/ic_menu_search"
android:title="@string/search_hint"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView" />
</menu>