cevap

6

ActionBar API, geçerli arka plan Drawable veya rengini almanın bir yolunu kullanamaz.

Ancak, daha sonra, ActionBarView almak, View.findViewById çağrı Drawable almak için View.getBackground aramaya Resources.getIdentifier kullanabilirsiniz. Yine de, bu size hala rengi vermiyor. Bunu yapmanın tek yolu, Drawable'u Bitmap'a dönüştürmek, daha sonra baskın rengi bulmak için bir çeşit color analyzer kullanın.

ActionBarDrawable'un alınmasına ilişkin bir örnek.

final int actionBarId = getResources().getIdentifier("action_bar", "id", "android"); 
    final View actionBar = findViewById(actionBarId); 
    final Drawable actionBarBackground = actionBar.getBackground(); 

Ama kendi özelliğini oluşturabilir ve temalarda uygulamak olacaktır kolay çözüm gibi görünüyor.

Özel Ayrıntı

<attr name="drawerLayoutBackground" format="reference|color" /> 

sizin DrawerLayout içeren düzeninde Sonra niteliğini

<style name="Your.Theme.Dark" parent="@android:style/Theme.Holo"> 
    <item name="drawerLayoutBackground">@color/your_color_dark</item> 
</style> 

<style name="Your.Theme.Light" parent="@android:style/Theme.Holo.Light"> 
    <item name="drawerLayoutBackground">@color/your_color_light</item> 
</style> 

başlat, android:background niteliği uygular: Burada

o bir örnek böyle:

android:background="?attr/drawerLayoutBackground" 

Yoksa TypedArray

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    final TypedArray a = obtainStyledAttributes(new int[] { 
      R.attr.drawerLayoutBackground 
    }); 
    try { 
     final int drawerLayoutBackground = a.getColor(0, 0); 
    } finally { 
     a.recycle(); 
    } 

} 
+4

actionBar.getBackground() boş beni döndürür kullanarak elde edebilirsiniz. Yanlış bir şey mi yapıyorum? – kalehv

+0

@kalehv getActivity(). GetActionBar(). SetBackgroundDrawable (...) kullanarak bir arka plan kümeniz var mı? Eğer ayarlanmamışsa, gerçekten boş bir değer elde edersiniz. – hcpl