ActionBarSherlock背景不重复预先ICS版本(ActionBarSherlock ba

2019-07-31 03:09发布

我在我的移动应用程序的动作条到ActionBarSherlock,我想自定义一个平铺背景的背景。 我测试我的代码2台真正的设备,一个运行Android 2.1和其他运行Android 4.0.4。

下面的代码工作的ICS装置上(背景不重复),但不是在一个埃克莱尔(背景被拉伸,而不是重复)。 我还测试了这款在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 -->

Answer 1:

这是Android的BUG#15340 ,而不是一个ActionBarSherlock错误。

你可以用类似的东西解决这个问题:

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


文章来源: ActionBarSherlock background does not repeat on pre ICS versions