5

アプリの ActionBar を ActionBarSherlock に移動し、背景をタイル張りの背景でカスタマイズしようとしています。Android 2.1 を実行するデバイスと Android 4.0.4 を実行するデバイスの 2 つの実際のデバイスでコードをテストしています。

以下のコードは、ICS デバイス (背景が繰り返されます) では機能しますが、Eclair デバイスでは機能しません (背景が繰り返される代わりに引き伸ばされます)。Android 2.3エミュレーターでもこれをテストしましたが、バックグラウンドも繰り返されません。tileMode="repeat"は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 -->
4

1 に答える 1

15

これはAndroid のバグ #15340であり、ActionBarSherlock のバグではありません。

これは、次のようなもので修正できます。

BitmapDrawable bg = (BitmapDrawable)getResources().getDrawable(R.drawable.bg_striped);
bg.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);
getSupportActionBar().setBackgroundDrawable(bg);
于 2012-08-22T18:39:05.497 に答える