2011-05-02 19 views
43

arka plan görüntüsü aşağıdadır: actionbar_background.xml aitİşlem Çubuğu Ben Holo Işık Tema miras ile İşlem Çubuğu arka planını özelleştirdiğinizden

styles.xml içeriği

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar"> 
<item name="android:background">@drawable/actionbar_background</item> 
</style> 
<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
<item name="android:actionBarStyle">@style/ActionBar</item> 
</style> 
</resources> 

İçerik

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
android:src="@raw/actionbar_background" 
android:tileMode="repeat" /> 

Tekrarlanmak yerine, görüntü gerilir, android: tileMode = "repeat" neden uygulanmıyor?

cevap

43

Tamam önceden

sayesinde # android-dev IRC kanalında Romain Guy sayesinde, bir sonraki sürümde sabit olacak petek üzerinde bilinen bir hata/Android 3.0 bulunuyor. O zamandan beri, tek çözüm kodundan bunu olduğunu ve :-)

final ActionBar actionBar = getActionBar(); 
BitmapDrawable background = new BitmapDrawable (BitmapFactory.decodeResource(getResources(), R.raw.actionbar_background)); 
background.setTileModeX(android.graphics.Shader.TileMode.REPEAT); 
actionBar.setBackgroundDrawable(background); 
+1

Koddan nasıl yaptığınızı sorabilir miyim? TileMode tekrar nasıl ayarlanır? – Alex

+8

eylem çubuğunu almayı denediğimde her zaman boşum: final ActionBar actionBar = getActionBar(); BitmapDrawable background = new BitmapDrawable (BitmapFactory.decodeResource (getResources(), R.raw.actionbar_background)); background.setTileModeX (android.graphics.Shader.TileMode.REPEAT); actionBar.setBackgroundDrawable (background); – rnoway

+1

@rnoway, yorumunuzu yanıtınızda bir düzenleme olarak eklemek daha iyi olurdu. Sorunu çözüm olarak işaretlemelisiniz çünkü sorunu düzeltir. –

43
Drawable d=getResources().getDrawable(R.drawable.background_image_name); 
getActionBar().setBackgroundDrawable(d); 

Yukarıdaki kod çalışır eylem çubuğu için arka plan görüntüsünü ayarlar.
Umarım yardımcı olur.

+0

ama neden aşağıdaki sürümü desteklemiyor 2.2, 2.3.3, vb. – prabu

5

Bunu kolayca yapabilirsiniz. Action Bar arka plan resmini değiştirmek isterseniz, bu kodu res/styles.xml dosyanıza yerleştirirsiniz.

<style name="Theme.MyAppTheme" parent="@android:style/Theme.Holo"> 
     <item name="android:actionBarStyle">@style/Theme.MyAppTheme.ActionBar</item> 
    </style> 

    <style name="Theme.MyAppTheme.ActionBar" parent="@android:style/Widget.Holo.ActionBar"> 
     <item name="android:background">@drawable/top_black_bg</item> 
    </style> 

Bunun için "drawable" klasöründen bir görüntü seçmeniz gerekir. İşte AndroidManifest.xml dosyasına bu temayı beyan etmeyi unutmayın Bundan sonra

"tp_black_bg.png" bir resim seçin

<application 
     . 
     . 
     . 
     android:theme="@style/Theme.MyAppTheme" >.............</application> 

Artık herhangi bir XML düzeni dosyasını yeniden açabilirsiniz, kolayca görebilirsiniz etki. Aynı şekilde, ActionBar'ın arka plan rengini de değiştirebilirsiniz.

Teşekkürler.

2

Geriye dönük uyumluluk için android.support.v7 kaynağından getSupportActionBar() öğesini kullanın.

2
mActionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.navbar));