Подтвердить что ты не робот

Могу ли я установить значок дома на панели действий с помощью styles.xml?

Я использовал следующий код в своем приложении, чтобы установить мой домашний значок на конкретный drawable:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_menu);
getSupportActionBar().setDisplayShowTitleEnabled(false);

Но у меня были проблемы с "задержкой" между "созданием декора и моим исполнением onCreate", как объясняется здесь Джейком Уортоном: ActionBar Lag в скрытии заголовка

В ссылке выше решение состояло в том, чтобы создать новый стиль и объявить его в манифесте, и поэтому я сделал:

<resources>
<style name="AppTheme" parent="android:Theme.Light" />

<style name="WATheme" parent="Theme.Sherlock.Light">
    <item name="android:actionBarStyle">@style/WATheme.ActionBar</item>
    <item name="actionBarStyle">@style/WATheme.ActionBar</item>
</style>

<style name="WATheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid">
    <item name="android:displayOptions">homeAsUp|showHome</item>
    <item name="displayOptions">homeAsUp|showHome</item>
</style>
</resources>

манифеста:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:theme="@style/WATheme"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Теперь он работает нормально, у меня есть домашняя кнопка с настройкой, но я все же хочу изменить значок на другой конкретный drawable, только в этом действии, не изменяя никаких android:icon в манифесте. Как я могу это достичь?

Надеюсь, что это было достаточно ясно. Спасибо.

4b9b3361

Ответ 1

Хорошо, просто выясните, чего не хватает. В styles.xml все, что мне нужно было сделать, это добавить следующие строки:

<item name="android:icon">@drawable/ic_menu</item>
<item name="icon">@drawable/ic_menu</item>

Итак, в конце у меня есть что-то вроде этого:

<resources>
<style name="AppTheme" parent="android:Theme.Light" />

<style name="WATheme" parent="Theme.Sherlock.Light">
    <item name="android:actionBarStyle">@style/WATheme.ActionBar</item>
    <item name="actionBarStyle">@style/WATheme.ActionBar</item>
    <item name="android:icon">@drawable/ic_menu</item>
    <item name="icon">@drawable/ic_menu</item>
</style>

<style name="WATheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid">
    <item name="android:displayOptions">homeAsUp|showHome|showTitle</item>
    <item name="displayOptions">homeAsUp|showHome|showTitle</item>
</style>
</resources>

Теперь он отлично работает, при этом все параметры displayOptions правильно установлены и без "лаг".:)