【问题标题】:setBackgroundDrawable not working properly [duplicate]setBackgroundDrawable 无法正常工作 [重复]
【发布时间】:2013-03-14 03:33:53
【问题描述】:

在我的应用程序中,我正在使用 actionbarsherlock。我用

getSupportActionBar().setBackgroundDrwable(R.drawable.test).

它工作正常,颜色按预期显示,但是当我去另一个活动并返回主要活动时。条形颜色变为黑色(在我的程序中,我没有为 backgrounddrawble 设置黑色,只是在 onStart() 中调用 setSupportAction().setBackgroundDrawable)。但是,如果我将代码更改为

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff550000)));

该应用程序运行良好。当我点击后退按钮时,颜色设置为预期的 0xff55000。

【问题讨论】:

  • 在 Oncreate() 方法中试一试
  • 已经解决了。问题是由于竞争条件。 ActionBar 对象是由其他线程获取的,所以 getSupportActionBar.setBackgroundDrawable 不起作用

标签: android android-actionbar actionbarsherlock android-drawable xml-drawable


【解决方案1】:

当您尝试以编程方式设置颜色时,我建议不要以这种方式直接使用颜色代码。它不会接受它。就这样试试吧..

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(mContext.getResources().getColor(Color.BLACK)));

希望它对你有用。

【讨论】:

  • Drawable 文件是一个可绘制的图层列表,我在其中定义了渐变形状。这里的问题是,即使我以编程方式声明了一个 GradientDrawable 对象,并使用 setBackgroundDrawable(object)。操作栏没有变成预期的颜色,当我回到主要活动时它只是变成黑色。但是,如果我单击操作栏上的任何按钮,它会变成可绘制文件中定义的预期颜色。所以我认为当“点击”后退按钮的动作发生时,应用程序还没有准备好获取定义的可绘制文件,它只适用于彩色可绘制文件。我说的对吗?
  • Color.BLACK 不是颜色资源ID,而是颜色值。使用新的 ColorDrawable(Color.BLACK)
【解决方案2】:

它对我来说也不是很好,特别是当我使用导航抽屉切换列表时。在我的情况下,如果我不使用切换,背景会在一秒钟内变为白色,然后加载背景可绘制对象。如果我使用切换,背景保持白色。

我必须使用自定义视图来实现我想要的效果,而不是更改背景。

【讨论】:

    【解决方案3】:

    我有几乎相同的问题,碰巧调用 getActionBar().setBackgroundDrawable 两次不起作用。 如果我只在 onCreate 中调用它一次就可以了。如果我将代码放在 onResume 中,它适用于第一个 onResume,但对于任何其他 onResume,它都设置为灰色

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-15
      • 2015-09-06
      • 2016-05-06
      • 2016-05-12
      • 2018-07-19
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多