Intereting Posts
Сравнение двух строк даты и времени в android? Избежать потери данных из-за прерывания при сохранении файлов на Android? Стратегия первичного ключа для Android (распределенного приложения) Duplicate entry: com / android / volley / AuthFailureError.class при компиляции проекта в студии android Реализация планшета Gmail, такого как навигационный ящик Подписанный вами отпечаток пальца уже используется другим клиентом OAuth2 для Android Как скопировать меньший растровый рисунок в более крупный? Добавление рамки или границы в ImageView и Drop-Shadow NDK – Как использовать сгенерированную библиотеку .so в другом проекте Как скрыть виртуальную клавиатуру при касании счетчика Использование Google Analytics для отслеживания фрагментов Как создать Scratch Card в Android? Как программировать zip на Genymotion программно TabWidget onClick после onSaveInstanceState (java.lang.IllegalStateException: не удается выполнить это действие после onSaveInstanceState) Вычислить подшипник компаса / заголовок для местоположения в 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 или аналогичную тему.