Android: ActionBar "Ana Sayfa" Simgesi uygulama simgesinden başka bir şey olacak şekilde nasıl değiştirilir?


114

Uygulamamın ana simgesi, bir görüntüde iki bölümden oluşuyor: bir logo ve altında birkaç harf. Bu, uygulamanın başlatıcı simgesi için iyi çalışır, ancak simge ActionBar'ın sol kenarında göründüğünde, harfler kesilir ve iyi görünmez.

ActionBar'a simgenin ayrı bir sürümünü sağlamak istiyorum, yalnızca "logo" kısmı ve altındaki harfler değil, ancak şimdiye kadar boş görünüyor. Doğrusu buna bir cevap bulamıyorum ve sorunun kendisini hiçbir yerde bulamıyorum bile.

Yanıtlar:


218

ActionBar , eğer sağlanmışsa bildiriminizin android: logo özelliğini kullanır . Bu, simge (Başlatıcı) ve logo (diğer şeylerin yanı sıra ActionBar) için ayrı çekilebilir kaynaklar kullanmanızı sağlar.


2
Evet. Manifest tarafından sağlananların yerine kullanılacak bir logo veya simge sağlamak için eylem çubuğunuz için özel bir stil de kullanabilirsiniz.
adamp

@Joe, AppCompat kullanarak API <11 için herhangi bir çözüm
cafebabe1991

49

AndroidManifest.xml'de:

<application
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:name="com..."
    android:theme="@style/Theme">...</Application>

Styles.xml'de: (Bkz. android:icon)

<style name="Theme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<style name="ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:icon">@drawable/icon</item>
</style>

android: logo da çalışacaktır. Farkı bilmiyorum.
AlikElzin-kilaka

İyileşen yaraları yırttığım için özür dilerim :-) Ancak aradaki fark, burada önerilen stil değişikliği çözümünün özel simgeyi yalnızca eylem çubuğuna uygulamasıdır; burada android:logo, manifestte tanımlanması diğer alanları da etkileyebilir.
dbm

@dbm, 'diğer alanlara' bir örnek verebilir misiniz?
AlikElzin-kilaka

2
Evet, o kadar merak ettim ki Google'la ilgilenmeye başladım ve Android geliştirici sitesinde şöyle diyor: developer.android.com/guide/topics/manifest/… . Bunun andorid:iconöznitelikten ne kadar farklı olduğu bana açık değil : developer.android.com/guide/topics/manifest/…
dbm

2
Eylem Çubuğu doc de ekleyebilir diyor android:iconüzere <activity>kolayca farklı etkinlikler için bunu değiştirmek böylece, eleman. Bunu denedim ve harika çalıştı. Özel bir temayla uğraşmanıza veya tüm etkinlikleri etkileme konusunda endişelenmenize gerek yok.
Jason

18

Lütfen bu satırı deneyin

getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_arrow);

1
NOT: setHomeAsUpIndicatorAndroid API 18+.
Joshua Pinter

8

AppCompat kullanıyorsanız, ActionBar simgesini Gingerbread (API 10) veya daha düşük sürümleri çalıştıran cihazlarda ayarlamanın tek yolu, bildiriminizdeki her Activity'de android: icon özniteliğini ayarlamak veya çizilebilirliği programlı olarak ayarlamaktır.

<manifest>
    <application>
        ...
        <activity android:name="com.your.ActivityName"
            ...
            android:icon="@drawable/ab_logo"/>
        ...
   </application>
</manifest>

Güncelleme: Ancak, başlatma Etkinliğinde android: icon özelliğini ayarlarsanız uygulama simgesinin geçersiz kılınacağı konusunda uyarılırsınız. Etrafta bildiğim tek çalışma, daha sonra ana Aktivitenizi başlatan bir sıçrama veya sahte Aktiviteye sahip olmaktır.


çalışmıyor !! Bunu denediniz mi? Lütfen ihtiyacım olan bir çözüm bulun.
Apurva

8

TheIT'den esinlenerek, bunu manifest dosyasını işleyerek, ancak biraz farklı bir şekilde çalıştırdım. Uygulama ayarındaki simgeyi, etkinliklerin çoğunun simgeyi alması için ayarlayın. Logoyu göstermek istediğiniz etkinlikte, etkinlik bildirimine android: logo özelliğini ekleyin. Aşağıdaki örnekte, yalnızca LogoActivity logoya sahip olmalıdır, diğerleri ise varsayılan olarak simgeye sahip olacaktır.

<application
    android:name="com.your.app"
    android:icon="@drawable/your_icon"
    android:label="@string/app_name">

    <activity
        android:name="com.your.app.LogoActivity"
        android:logo="@drawable/your_logo"
        android:label="Logo Activity" >

    <activity
        android:name="com.your.app.IconActivity1"
        android:label="Icon Activity 1" >

    <activity
        android:name="com.your.app.IconActivity2"
        android:label="Icon Activity 2" >

</application>

Umarım bu başka birine yardım eder!


AppCompat v7 kullanıyorum çünkü android 2.3'ü desteklemek istiyorum, ancak yönteminiz çalışmıyor.
liam xu

6

"AppCompatActivity'yi genişletir" kullanıyorsanız ve eylem çubuğunu mevcutsa lütfen deneyin.

 ActionBar eksinbar=getSupportActionBar();
if (eksinbar != null) {
    eksinbar.setDisplayHomeAsUpEnabled(true);
    eksinbar.setHomeAsUpIndicator(R.mipmap.imagexxx);
}

3

logo oluşturmak

klasörlerde " drawable-..." hepsinde oluştur logo.png. Klasörlerin konumu: [YOUR APP]\app\src\main\res

AndroidManifest.xml'de satır ekleyin: android:logo="@drawable/logo"

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:logo="@drawable/logo"
    ...

bu kadar.


0

Bunu kontrol etmek isteyebilirsiniz, uygulama simgeleriniz için ihtiyacınız olan her şeye sahip olun

http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

Güncelleme

Sanırım varsayılan olarak başlatıcı simgenizi kullanıyor ... En iyi seçeneğiniz ayrı bir görüntü oluşturmaktır ... Eylem çubuğu için tasarlandı ve onu kullanıyor. Bu kontrol için: http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems


Bu bağlantı için teşekkür ederim ve sonunda simgemdeki harfleri kaldırıp uygulama genelinde aynı "logo" simgesini kullanabilirim, ancak yine de daha küçük bir sürümünü veya biraz farklı bir sürümünü kullanmam gerekebilir ActionBar ve ben de bunu bulmaya çalışıyorum.
Phil Ringsmuth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.