Özel ActionBar rengi / stili nasıl ayarlanır?


89

Projemde kullanıyorum Android Navigation bar, eylem çubuğundaki en üst rengi kırmızı bir şeye dönüştürmek istiyorum, bunu nasıl yapabilirim? Bende bunun gibi bir şey var

en iyi siyah

ve bunun gibi bir şey istiyorum

üst kırmızı

bunu nasıl başarabilirim?

Yanıtlar:


176

Özel bir Stil oluşturarak ActionBar'ın (ve diğer öğelerin) rengini tanımlayabilirsiniz :

Android projenizin res / values ​​/ styles.xml dosyasını düzenlemeniz yeterlidir .

Örneğin bunun gibi:

<resources>
    <style name="MyCustomTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
    </style>

    <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">ANY_HEX_COLOR_CODE</item>
    </style>
</resources>

Ardından "MyCustomTheme" öğesini ActionBar içeren Aktivitenizin Teması olarak ayarlayın.

ActionBar için aşağıdaki gibi bir renk de ayarlayabilirsiniz:

ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED)); // set your desired color

Buradan alınmıştır: XML kullanarak bir ActionBarActivity'nin ActionBar'ının arka plan rengini nasıl değiştirebilirim?


2
"Sonra" MyCustomTheme "yi ActionBar'ı içeren Aktivitenizin Teması olarak ayarlayın." İle ne demek istiyorsunuz? Bunu nasıl yaparım?
Kala J

2
Aktivite
XML'nizde

2
peki ya android'de kalan valuesv14 ve valuesv21 styles.xml dosyaları
Harsha

Başlık textStyle'ı değiştirmek nasıl olur?
Adam Hurwitz

@KalaJ setTheme(R.style.MyCustomTheme) , etkinliğinizin onCreate yönteminde kullanın .
NullByte08

59

Genel olarak Android işletim sistemi, uygulama geliştiricilerinin evrensel olarak bir dizi evrensel UI öğesi stil parametresini Android uygulamalarına bir bütün olarak veya alternatif olarak tek bir Etkinlik alt sınıfına uygulamasına izin vermek için bir "tema" dan yararlanır.

Dolayısıyla, Sürüm 3.0 ve sonraki sürümler için uygulamalar geliştirirken Android Manifest XML dosyanızda belirtebileceğiniz üç ana Android işletim sistemi "sistem teması" vardır.

Burada (APPCOMPAT) destek kitaplığından bahsediyorum: - Yani üç tema 1. AppCompat Light Theme (Theme.AppCompat.Light)

görüntü açıklamasını buraya girin

  1. AppCompat Koyu Teması (Theme.AppCompat),

görüntü açıklamasını buraya girin

  1. Ve bu ikisi arasında bir melez olan AppCompat Light Theme with the Darker ActionBar. (Theme.AppCompat.Light.DarkActionBar)

AndroidManifest.xml ve etiketine bakın, android temasından şu şekilde bahsedilir: - android: theme = "@ style / AppTheme"

Styles.xml dosyasını açın ve orada açıklanan temel uygulama temamız var: -

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  </style>

Eylem çubuğunu biçimlendirmek için bu ana tema öğelerini geçersiz kılmamız gerekir.

Farklı renk arka planına sahip ActionBar: -

Bunu yapmak için, Android ActionBar kullanıcı arabirimi öğesinin stil özelliklerini tutan @ style / Widget.AppCompat.Light.ActionBar.Solid.Inverse'e üst referans ile yeni bir MyActionBar stili (herhangi bir ad verebilirsiniz) oluşturmamız gerekir . Yani tanım

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="background">@color/red</item>
</style>

Ve bu tanım, AppTheme'mizde, geçersiz kılınan ActionBar stilini şu şekilde işaret ederek:

@ style / MyActionBar Pembe arka plan rengine sahip ActionBar

Başlık çubuğu metin rengini değiştirin (örneğin siyahtan beyaza): -

Şimdi başlık metni rengini değiştirmek için, parent = "@ style / TextAppearance.AppCompat.Widget.ActionBar.Title"> üst referansını geçersiz kılmamız gerekiyor.

Yani stil tanımı şöyle olacaktır:

<style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/white</item>
</style>

TitleTextStyle değişikliği, ActionBar üst OS UI öğesinin alt öğesi olduğundan , MyActionBar stil tanımının içinde bu stil tanımına başvuracağız. Dolayısıyla, MyActionBar stil öğesinin son tanımı

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="background">@color/red</item>
    <item name="titleTextStyle">@style/MyActionBarTitle</item>
</style>

SO bu son Styles.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- This is the styling for action bar -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="background">@color/red</item>
        <item name="titleTextStyle">@style/MyActionBarTitle</item>
    </style>

    <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/white</item>
    </style>
</resources>

Beyaz başlık rengiyle ActionBar Daha fazla ActionBar seçeneği için Menü stili bu bağlantıya bakın


2
hey dostum işe yaradı. Bir şüphem, menü taşma simgesinin rengini değiştirmek istersem, rengi temamıza göre değiştirir değil mi? koyu tema için beyaz simge ve açık tema için koyu simge; bunu beyaza nasıl değiştirebilirim? cevabınızdaki son resmi düşünün.
Ameen Maheen

33

Yalnızca Android 3.0 ve üstü için

Yalnızca Android 3.0 ve sonraki sürümleri desteklerken, işlem çubuğunun arka planını şu şekilde tanımlayabilirsiniz:

res / values ​​/ themes.xml

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

<!-- ActionBar styles -->
  <style name="MyActionBar" parent="@style/Widget.Holo.Light.ActionBar.Solid.Inverse">
       <item name="android:background">#ff0000</item>
  </style>
</resources>

Android 2.1 ve üstü için

Destek Kitaplığı'nı kullanırken, stil XML dosyanız şöyle görünebilir:

<?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>

    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

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

    <!-- Support library compatibility -->
    <item name="background">@drawable/actionbar_background</item>
  </style>
 </resources>

Ardından temanızı tüm uygulamanıza veya bireysel etkinliklerinize uygulayın:

daha fazla ayrıntı için Documentaion


Bu garip: Android 3.0 ve üzeri 2.1 ve üzeri (Materyal Tasarımı / Uygulama Uyumluluğu) yerine daha eski bir stil (holo) veriyorsunuz ...
Roel

@DalvikVM Yeah..Appcompat eski sürümler içindir. daha yüksek sürümler için kullanmaya gerek yok. Bu cevabın verildiği sırada materyal tasarımı yapılmamıştı.
Ketan Ahir

Bir hata alıyorum: Sorunu çözmek No resource found that matches the given name '@style/Widget.Holo.Light.ActionBar.Solid.Inverse'.için değiştirmek android:style/Widget.Holo.Light.ActionBar.Solid.Inverse. Teşekkürler.
Annie Lagang

@ style / Theme.AppCompat.Light.DarkActionBar benim durumumda çözülemiyor (Android Studio) - @android: style / Theme.AppCompat.Light.DarkActionBar - yani stilden önce "android" olması gerekmiyor mu?
AgentKnopf

32

İşlem çubuğu rengini şu şekilde değiştirebilirsiniz:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/green_action_bar</item>
</style>

İşlem çubuğu rengini değiştirmek için ihtiyacınız olan her şey bu.

Artı, durum çubuğu rengini değiştirmek isterseniz, sadece satırı ekleyin:

 <item name="android:colorPrimaryDark">@color/green_dark_action_bar</item>

İşte daha net hale getirmek için geliştiricinin android sitesinden alınan bir ekran görüntüsü ve burada renk paletini özelleştirme hakkında daha fazla bilgi edinmek için bir bağlantı var .

görüntü açıklamasını buraya girin


7

Başka bir yapma olasılığı.

actionBar.setBackgroundDrawable (yeni ColorDrawable (Color.parseColor ("# 0000ff")));


5

TitleTextColor kullanarak ActionBar metin rengini değiştirebilirim

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="titleTextColor">#333333</item>
</style>

4

Özel renk:

 <style name="AppTheme" parent="Theme.AppCompat.Light">

                <item name="colorPrimary">@color/ColorPrimary</item>
                <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
                <!-- Customize your theme here. -->
     </style>

Özel Stil:

 <style name="Theme.AndroidDevelopers" parent="android:style/Theme.Holo.Light">
        <item name="android:selectableItemBackground">@drawable/ad_selectable_background</item>
        <item name="android:popupMenuStyle">@style/MyPopupMenu</item>
        <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item>
        <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
        <item name="android:actionDropDownStyle">@style/MyDropDownNav</item>
        <item name="android:listChoiceIndicatorMultiple">@drawable/ad_btn_check_holo_light</item>
        <item name="android:listChoiceIndicatorSingle">@drawable/ad_btn_radio_holo_light</item>
    </style>

Daha Fazlası için: Android ActionBar


3

AppCompatActivityYukarıdaki cevapları kullandığım için benim için işe yaramadı. Ancak aşağıdaki çözüm işe yaradı:

In res / styles.xml

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
</style>


Not: Bunun colorPrimaryyerine kullandımandroid:colorPrimary


1

style.xml'de bu kodu ekleyin

<resources>
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/MyAction</item>
    </style>

    <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#333333</item>
    </style>
</resources>

0

Bunu kullanın - http://jgilfelt.github.io/android-actionbarstylegenerator/

Eylem çubuğunuzu birkaç dakika içinde canlı bir ön izleme ile özelleştirmek için iyi bir araç.


1
Bu bağlantı soruyu cevaplayabilirken, cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak daha iyidir. Bağlantılı sayfa değişirse yalnızca bağlantı yanıtları geçersiz hale gelebilir.
Roman Marusyk
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.