我正在使用 Action Bar Compat,以便我的带有导航抽屉的操作栏向后兼容到 API 级别 9,我想更改操作栏的背景。
我从Android Developers复制了代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@drawable/actionbar_background</item>
<!-- Support library compatibility -->
<item name="background">@drawable/actionbar_background</item>
</style>
</resources>
问题来了。
当我将可绘制的图像或颜色作为背景时,它可以正常工作。但是我想将背景定义为渐变形状,所以我actionbar_background
看起来像:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<gradient
android:startColor="@color/ac_bg_start"
android:endColor="@color/ac_bg_end"
android:type="linear"/>
<size
android:width="1dp"
android:height="48dp"/>
</shape>
我希望它以水平方式重复,但即使这样也会导致错误,事实上,非常有趣的错误。当我尝试运行应用程序时,测试设备甚至模拟器都会重新启动。我能够DeadObjectException
在重新启动之前捕捉到。
背景可绘制对象应该如何?