Центр поиска в панели действий

Как я могу центрировать ActionView (в частности, SearchView) внутри панели действий?

Как видно из приложения Google Книги:

Приложение Google Книги SearchView http://i46.tinypic.com/2z909is.png

Моя текущая настройка макета ( search_layout.xml ) :

 <?xml version="1.0" encoding="utf-8"?> <SearchView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:queryHint="@string/search_hint" /> 

Файл XML My Action Bar ( menu.xml ) :

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:icon="@+android:drawable/ic_menu_search" android:title="@string/search" android:showAsAction="always|collapseActionView" android:id="@+id/searchMenuItem" android:actionLayout="@layout/search_layout" /> </menu> 

Есть ли способ имитировать поведение SearchView в книгах?

Насколько я могу судить, View центре ActionBar не может быть достигнут с помощью Action Items в xml menu . Однако это может быть реализовано путем установки пользовательского макета в ActionBar . Основной пример:

Activity :

 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getActionBar(); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setDisplayShowHomeEnabled(true); actionBar.setCustomView(R.layout.actionbar_layout); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

Где actionbar_layout :

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <SearchView android:id="@+id/mySearchView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:iconifiedByDefault="false" /> </RelativeLayout> 

Создает это на 7-дюймовой планшете:

Введите описание изображения здесь

Обратите внимание, что атрибут iconifiedByDefault установлен на false в SearchView который заставляет его отображаться расширенным, а не только как значок. Это может потребовать, чтобы вы скрывали программную клавиатуру программным способом, или она будет запущена при запуске Activity.

Посмотрите здесь . Вы можете просто использовать атрибут android: actionViewClass = "android.widget.SearchView", и это должно работать нормально (помните, что вы можете получить ссылку на searchView в Java и изменить подсказку там, если это то, что вы хотите ).