2012-08-22 12 views
5

Przenoszę ActionBar aplikacji do ActionBarSherlock i próbuję dostosować tło z tłem kafelkowym. Testuję mój kod na 2 prawdziwych urządzeniach, jednym z systemem Android 2.1 i drugim z systemem Android 4.0.4.Tło ActionBarSherlock nie powtarza się na wcześniejszych wersjach ICS

Poniższy kod działa na urządzeniu ICS (tło się powtórzy), ale nie na urządzeniu Eclair (tło jest rozciągnięte zamiast powtarzania). Przetestowałem to również na emulatorze Androida 2.3, a tło też się nie powtórzy. Wygląda na to, że tileMode="repeat" działa tylko na ICS.

themes.xml:

<style name="Theme.Opheodrys.Base" parent="Theme.Sherlock.Light"> 
    <item name="android:actionBarStyle">@style/Opheodrys.Widget.ActionBar</item> 
    <item name="actionBarStyle">@style/Opheodrys.Widget.ActionBar</item> 
</style> 

<style name="Opheodrys.Widget.ActionBar" parent="Widget.Sherlock.Light.ActionBar"> 
    <item name="android:background">@drawable/ab_background_pattern</item> 
    <item name="background">@drawable/ab_background_pattern</item> 
</style> 

ab_background_pattern.xml:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/ab_background_tile" 
    android:tileMode="repeat" 
    tileMode="repeat" /> <!-- I've added this just in case, but it doesn't seem to be needed --> 

Odpowiedz

15

To Android bug #15340 a nie bug ActionBarSherlock.

Można to naprawić coś podobnego do:

BitmapDrawable bg = (BitmapDrawable)getResources().getDrawable(R.drawable.bg_striped); 
bg.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT); 
getSupportActionBar().setBackgroundDrawable(bg); 
+0

Po wysłaniu na to pytanie Natknąłem tego błędu i szukał poprawki w tym konkretnym przypadku. Dzięki za kod. Zakładam, że był to problem z ActionBarSherlock, ponieważ mam podobną możliwość rysowania, która jest zastosowana na tle ImageView i nigdy nie zauważyłem, że rozciąganie ... –

+0

Przyszli podróżujący: teraz jest automatycznie ustalany przez ABS. –

Powiązane problemy