ActionBarSherlock上的activatedBackgroundIndicator的自定义背景不起作用

我正在使用ActionBarSherlock ,我正在尝试为行背景自定义activatedBackgroundIndicator属性。

如果我使用最新的android sdk,没有ActionBarSherlock ,我可以自定义背景,在res / values / style.xml上创建以下样式,并在AndroidManifest.xml上将其定义为android:theme =“@ style / Theme。自定义“

   @drawable/activated_background   

然后,我的res / drawable / activated_background.xml包含下一个代码:

     

最后,用于定义ListView中每一行的代码是:

     

结果显示在屏幕截图中。 是一个简单的应用程序,当单击列表项时,只有ListView与ListView.CHOICE_MODE_SINGLEgetListView()。setItemChecked(position,true)

标准选定行的蓝色现在为黄色,效果很好。

没有ABS的清单

当我想使用ActionBarSherlock应用相同的自定义时,会出现此问题。 现在样式文件是下一个,背景显示为蓝色而不是自定义黄色。

    @drawable/activated_background @drawable/activated_background   ?android:attr/activatedBackgroundIndicator   

列出ABS

我不知道ActionBarSherlock是否支持android:activatedBackgroundIndicatorfunction,或者我忘了实现需要能够更改默认颜色的东西。

有任何想法吗?

    最后我find了问题的解决方案。
    它是行适配器使用的上下文 。 使用的构造函数如下面的代码所示:

     public RowAdapter(Activity activity, ArrayList list) { this.mContext = activity.getApplicationContext(); this.elements = list; this.theActivity = activity; this.inflater = (LayoutInflater) this.mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } 

    只需更改上下文
    this.mContext = activity.getApplicationContext() (Application-Context)

    this.mContext = activity.getBaseContext() (Activity-Context)
    解决了问题,现在背景是自定义的。

    每当你需要操作Views然后去Activity-Context ,否则Application-Context就足够了。

    这个答案帮助我理解为什么在我的情况下使用getBaseContext()而不是getApplicationContext()

    自定义行背景