Intereting Posts
Как запустить приложение электронной почты с полем «Кому»? Кэширование в веб-браузере Android Android – проблемы с анимацией значка ActionBar из фрагментов Ошибка «Разрешить отказ» при установке apk на устройстве Android получит местоположение или предложит включить службу определения местоположения, если отключено Добавление элементов в Endless Scroll RecyclerView с помощью recycliewiew ReverseLayout Как защитить API REST для мобильных приложений? AVD не работает Создание заблокированного ScrollView в Android Панель контекстного действия Android-совместимости Неизвестный восклицательный знак в файле xml Как ссылаться на стиль, определенный в модуле Android с помощью IntelliJ? QGuiApplication останавливает цикл события, когда телефон блокируется при компиляции с Qt 5.3 или Qt 5.4 (но не с Qt 5.2) Ошибка идентификации идентификатора найдена для атрибута даже после использования пространства имен http://schemas.android.com/apk/res-auto Как переместить и переименовать проект в студии Android?

Использование активной панели действий поддержки

Я только что изменил наш код, чтобы использовать новый SupportActionBar, предоставленный в библиотеке v7-appcompat, но при запуске кода на телефоне Jellybean (по-видимому, такая же проблема существует для Honeycomb и Ice Cream Sandwich), кнопка дома никогда не кажется Активироваться.

Вызов getSupportActionBar (). SetHomeButtonEnabled (true); Похоже, не делает то, что он говорит, но работает для телефонов Gingerbread.

Если я заменил его на getActionBar (). SetHomeButtonEnabled (true), он работает.

Тема, которую я использую для v11 +, такова:

<style name="MyTheme" parent="@style/Theme.AppCompat"> <item name="android:windowActionBar">true</item> <item name="android:windowNoTitle">false</item> <item name="android:listViewStyle">@style/MyListView</item> <item name="android:actionBarStyle">@style/MyActionBarStyle</item> <item name="android:windowSoftInputMode">stateAlwaysHidden</item> <item name="android:buttonStyle">@style/MyButton</item> <item name="android:radioButtonStyle">@style/MyRadioButtonStyle</item> <item name="android:windowContentOverlay">@drawable/ab_solid_dove_grey</item> <item name="android:windowTitleSize">@dimen/action_bar_height</item> <item name="android:selectableItemBackground">@drawable/sel_standard_item</item> <item name="android:windowBackground">@drawable/default_bg</item> <item name="android:actionMenuTextAppearance">@style/MyActionBarText</item> <item name="android:actionMenuTextColor">@color/gallery</item> <item name="android:tabWidgetStyle">@style/MyTabWidget</item> </style> 

И стиль панели действий v11 + определяется:

 <style name="MyActionBarStyle" parent="android:style/Widget.Holo.ActionBar"> <item name="android:displayOptions">useLogo|showHome|showCustom</item> <item name="displayOptions">useLogo|showHome|showCustom</item> <item name="android:actionBarSize">@dimen/action_bar_height</item> <item name="android:icon">@drawable/ic_launcher</item> <item name="android:background">@android:color/transparent</item> <!-- Remove blue line from bottom of action bar --> </style> 

Кто-нибудь знает, почему кнопка дома не активируется, если на версии Android, которая поддерживает панель действий правильно.

=== UPDATE === Я только что посмотрел исходный код библиотеки appcompat, и я заметил следующее в ActionBarImplBase, которое выглядит неправильно:

  setHomeButtonEnabled(abp.enableHomeButtonByDefault() || homeAsUp); 

Это означает, что кнопка «Дом» будет включена только в том случае, если версия Android меньше ICS или если включен индикатор включения? – чего я не хочу.

Solutions Collecting From Web of "Использование активной панели действий поддержки"

Вы пробовали использовать все три из них (также попробуйте поменять местами для getSupportActionbar() )?

  getActionBar().setDisplayShowHomeEnabled(true); getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true); 

Вы пытались обращаться с кнопкой вручную?

 @Override public boolean onOptionsItemSelected(int featureId, MenuItem item) { int itemId = item.getItemId(); if(itemId == android.R.id.home){ // Do stuff } return true; } 

Это работало для меня:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_your_activity); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // ... other stuff } @Override public boolean onSupportNavigateUp(){ finish(); // or call onBackPressed() return true; } 

Метод onSupportNavigateUp() вызывается при использовании кнопки « SupportActionBar в SupportActionBar .

Попробуйте использовать библиотеку Шерлока для устройств Android, таких как панели инструментов для инструментов android, поддерживаемые только с 3.0, поэтому библиотека блокировки sherlock дает вам обратную совместимость.

http://actionbarsherlock.com/ — скачать библиотеку здесь.

Затем добавьте эти строки в свой код.

 ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setIcon(android.R.color.transparent); actionBar.setDisplayUseLogoEnabled(false); 

Это поможет вам добавить задний домашний ключ в панель действий. Это также сделает ваш значок невидимым, если вы не хотите его показывать. Но если вы хотите, чтобы ваше приложение отображалось на всех мероприятиях, просто прокомментируйте эту строку ниже

actionBar.setIcon (android.R.color.transparent);

Теперь попробуйте это. Потому что я смог решить свою собственную проблему, хотя это было на Шерлоке. Из ваших стилей выше я вижу, что вы сделали некоторые настройки для своих тем. В моем случае я сделал некоторые настройки для моей темы Шерлока, и это было то, что дало мне проблему со стороны на Android 4.0 и выше моя тема не удалась. Поэтому я просто добавил фрагмент кода, который сообщает андроиду использовать тему Шерлока по умолчанию, когда он работает на Android 4.0 и выше. Поэтому я полагаю, что это сработает для вас. Вы указываете андроиду использовать тему по умолчанию v7-appcompat-библиотеки в версии Android, которая не работает для вас.

Код ниже:

 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { this.setTheme(R.style.Theme_Sherlock); } else { this.setTheme(R.style.Theme_Sherlock_Light_DarkActionBar); } 

В вашем случае отредактируйте тему в библиотеке v7-appcompat.

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

Вы можете добавить ActionBar к своей деятельности при запуске на уровне API 7 или выше, расширив класс ActionBarActivity для своей активности и установив тему активности на Theme.AppCompat или аналогичную тему.