2

我刚刚开始使用操作栏 sherlock,我一直在努力解决操作栏底部显示的边框。我很确定问题不是由背景图像引起的。

 <style name="Theme.MyTheme" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
    <item name="android:actionBarItemBackground">@drawable/states_of_actionbar</item>
    <item name="actionBarItemBackground">@drawable/states_of_actionbar</item>
    <item name="actionDropDownStyle">@style/DropDownStyle</item>
    <item name="android:actionDropDownStyle">@style/DropDownStyle</item>
</style>

<style name="Widget.MyTheme.ActionBar" parent="android:Widget.Holo.ActionBar">
    <item name="android:background">@drawable/action_bar_bg</item>
    <item name="background">@drawable/action_bar_bg</item>
    <item name="android:src">@drawable/action_bar_bg</item>
</style>

我试图在 values & values-14 中定义上述风格(背景),但没有运气..

我的猜测是它受到全息风格的影响..

我怎样才能摆脱厚边框?

这是澄清我的问题的图像:

在此处输入图像描述

4

1 回答 1

2

我认为您尝试使用 XY 重复背景图像或平铺作为操作栏背景,所以问题是您的背景图像的高度不足以覆盖操作栏高度,而粗边框是下一个 Y 平铺图像的结果。
您可以通过增加图像高度来解决此问题。或者您可以使用setTileModeXY(TileMode.REPEAT, TileMode.CLAMP)from 类android.graphics.drawable.BitmapDrawable的方法使图像在水平重复图像时拉伸其高度,然后应用为您的操作栏背景。
这里的示例代码:

void onCreate(Bundle savedInstanceState) {
        BitmapDrawable bg = (BitmapDrawable)getResources().getDrawable(R.drawable.your_image); // get the image as bitmap drawable
        bg.setTileModeXY(TileMode.REPEAT, TileMode.CLAMP); // set the TileMode.
        getSupportActionBar().setBackgroundDrawable(bg); // applied to actionbar      
}
于 2013-01-15T22:46:03.993 回答