Intereting Posts
Не удается установить Android ADT 21.1 на eclipse Juno (Windows 7) после обновления до SDK 21.1 Использование цвета и color.darker в Android? Получить всех друзей пользователя с помощью API-интерфейса Facebook – Android Eclipse создает расширение ActionBarActivity вместо активности Студия Android не устанавливается, даже если установлен JDK 8 Отключить один ключ на пользовательской клавиатуре на Android Создавайте бесплатные / платные версии приложения из того же кода Как имитировать вращение устройства с помощью эмулятора Android? Загрузка большого количества изображений с сервера на Android Могу ли я использовать изображение из системы на кнопке или мне нужно нарисовать свое? Выход из приложения при нажатии кнопки «Назад» в действии с несколькими фрагментами в «Навигационном ящике» Подписанный apk, получивший отказ в proguard enable Android + eclipse + maven + actionbarsherlock Java.lang.IllegalArgumentException: зарегистрировать слишком много широковещательных приемников Что такое идентификатор TextView в макете simple_list_item_1 в Android?

Определенный пользователем ActionBar Action View: получение ширины вправо

На мороженое Сэндвич:

Я хочу добавить AutoCompleteTextView в ActionBar через стандартный механизм Action View (потому что SearchView недоступен для предварительного ICS, и я также использую ActionBarSherlock ):

<item android:id="@+id/menu_search" android:actionViewClass="com.example.AutoCompleteActionView" android:showAsAction="ifRoom" android:title="@string/address"></item> <item android:id="@+id/menu_close" android:icon="@drawable/ic_menu_close_clear_cancel" android:showAsAction="always"></item> <item android:id="@+id/menu_ok" android:icon="@drawable/ic_menu_ok" android:showAsAction="always"></item> 

Это работает, однако по умолчанию он не потребляет доступное пространство в ActionBar, которое я бы хотел.

Я посмотрел на источник для SearchView и увидел, как он переопределяет onMeasure , и сделал то же самое для моего собственного класса, который я получил из AutoCompleteTextView. Когда я это делаю, AutoCompleteTextView потребляет все пространство , не оставляя места для двух пунктов меню, которые я хочу отобразить справа от него.

Похоже, что ширина, возвращаемая функцией MeasureSpec.getSize () , не учитывает два других пункта меню, когда MeasureSpec.getMode () – MeasureSpec.AT_MOST .

Кто-нибудь сделал что-то подобное? Какие-либо предложения?

Спасибо, Дамиан

Solutions Collecting From Web of "Определенный пользователем ActionBar Action View: получение ширины вправо"

Я думаю, это могло бы помочь:

Создайте складной элемент меню с настраиваемой компоновкой:

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menuSearch" android:showAsAction="always|collapseActionView" android:icon="@drawable/action_search" android:actionLayout="@layout/collapsible_absearch"> </item> </menu> 

Это настраиваемый макет:

 <?xml version="1.0" encoding="utf-8"?> <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ab_Search" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/search" /> 

Затем в вашей деятельности:

 public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.activitymenu, menu); MenuItem menuItem=menu.findItem(R.id.menuSearch); menuItem.setOnActionExpandListener(new OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { mAbSearch=(AutoCompleteTextView) item.getActionView().findViewById(R.id.ab_Search); // Set your adapter and do whatever you want return true; } }); 

Я не смог заставить предложение Маттиаса работать в коде (может быть, я чего-то упустил), но добавление атрибута minWidth к самому верхнему элементу в моем представлении действий получило трюк.

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="64dip" android:minWidth="64dip" android:layout_height="match_parent" android:gravity="center" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:id="@+id/imageViewAnimatedProgressSpinner" android:background="@drawable/animated_progress_spinner" /> </FrameLayout> 

Это поможет вам ?:

  ActionBar.LayoutParams layoutParams = new LayoutParams(android.app.ActionBar.LayoutParams.MATCH_PARENT, android.app.ActionBar.LayoutParams.MATCH_PARENT); View customNav = LayoutInflater.from(getSupportActionBar().getThemedContext()).inflate(R.layout.your_layout, null); getSupportActionBar().setCustomView(customNav, layoutParams); getSupportActionBar().setDisplayShowCustomEnabled(true); 

Может быть легкими годами позже, но если кто-то придет посмотреть, сделайте следующее в своих действиях, чтобы получить их в качестве значков панели действий по умолчанию,

 //Define a style which extends the themed action button in styles.xml, if you want you can use references to have dynamic styles.. this is an example for holo theme <style name="ActionButtonStyle" parent="@android:style/Widget.Holo.ActionButton"> </style> //For your action view, use this as the style, I find the issue with Progress bars and hence //the example, <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" style="@style/ActionButtonStyle" > <ProgressBar android:id="@+id/progressBar2" android:layout_width="match_parent" android:layout_height="match_parent" > </ProgressBar> </LinearLayout> 
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent"> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/visibility_search_edit_text"/> </RelativeLayout> 

Подпишитесь на этот пост: Сделайте ширину ActionView от ActionBar, соответствующую ширине ActionBar . Это сделает его растянутым.