лого на лентата за действия на манифест на android

Това е доста просто, но ми причинява мъка. Искам лентата ми с действия да показва ресурса @drawable, определен от android:logo в манифеста:

    <application
            android:allowBackup="true"
            android:label="@string/app_name"
            android:icon="@drawable/logo">
        <activity
            android:name=".MainActivity"
            android:theme="@style/CustomActionBarTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

Ако премахна атрибута android:theme, логото се появява, но приложението незабавно се срива поради някакво незаконно изключение в състояние на super.onCreate(savedInstanceState); в основната дейност. Ако напусна темата, лентата за действие е празна с фонов цвят, зададен в дейността.

Тема:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
        parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

<!-- ActionBar styles -->
<style name="MyActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:icon">@drawable/logo</item>
    <item name="android:background">#F7430C</item>
</style>

Activity setting background:

public class MainActivity extends ActionBarActivity {

private ActionBar bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
}

Всичко, от което се нуждая, е лента за действие с логото и фонов цвят #F7430C.


person sqlbuddy    schedule 23.02.2015    source източник
comment
провери го, не работи   -  person sqlbuddy    schedule 23.02.2015
comment
Не сменя ли бг цвета?   -  person Apurva    schedule 23.02.2015
comment
да, но иконата не се показваше   -  person sqlbuddy    schedule 23.02.2015
comment
сигурни ли сте, че пишете getActionBar().setIcon(R.drawable.ic_launcher); в метода onCreate()? и какво е minSdkVersion на вашето приложение?   -  person Apurva    schedule 23.02.2015
comment
Използвате ли appcompat 21?   -  person Gabriele Mariotti    schedule 23.02.2015
comment
stackoverflow.com/questions/27768109/   -  person Gabriele Mariotti    schedule 24.02.2015


Отговори (2)


Опитайте това и ми кажете, ако работи.

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:actionBarStyle">@style/FooBar</item>
        <item name="actionBarStyle">@style/FooBar</item>
    </style>

    <!-- Base application theme. -->
    <style name="FooBar"
        parent="Widget.AppCompat.Light.ActionBar">
        <item name="android:icon">@drawable/logo</item>
        <item name="icon">@drawable/logo</item>
        <item name="android:background">#F7430C</item>
        <item name="background">#F7430C</item>

    </style>

</resources>

РЕДАКТИРАНЕ

Горното решение ще работи само ако сте задали actionBar.setDisplayShowHomeEnabled() на true във вашата дейност.

person Varundroid    schedule 23.02.2015
comment
с това внедрено и зададения фон в дейността е коментиран, получавам бяла, празна лента за действие - person sqlbuddy; 23.02.2015
comment
Току-що забелязах, че родителят на стила FooBar е грешен. Актуализирах отговора си, сега опитайте и ме уведомете, ако все още имате същия проблем. - person Varundroid; 23.02.2015
comment
Освен това вашият родител AppTheme също може да е бил проблем. Актуализирах и двамата родители. По всичко личи, че трябва да работи сега. - person Varundroid; 23.02.2015
comment
Току-що актуализирах трите кодови блока, проблемът продължава. Имам черна лента, бели букви на шрифта и не се показва ресурс за рисуване. Мога да задам цвета на фона само с bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(#F7430C))); в дейността - person sqlbuddy; 23.02.2015
comment
Актуализирах отговора си, опитайте първо това и ако не работи, прочетете това - stackoverflow.com/questions/26642378/. Това може да е полезно за вас. - person Varundroid; 23.02.2015
comment
Тази публикация помогна, липсваше ми actionBar.setDisplayShowHomeEnabled(true); - person sqlbuddy; 23.02.2015

Ето как поправих това:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:actionBarStyle">@style/FooBar</item>
    <item name="actionBarStyle">@style/FooBar</item>
</style>

<!-- Base application theme. -->
<style name="FooBar"
    parent="Widget.AppCompat.Light.ActionBar">
    <item name="android:icon">@drawable/logo</item>
    <item name="icon">@drawable/logo</item>
    <item name="android:background">#F7430C</item>
    <item name="background">#F7430C</item>

</style>

След надуване на лентата в активността трябваше да задам:

bar.setDisplayShowHomeEnabled(true);
person sqlbuddy    schedule 23.02.2015