以编程方式更改ActionBarSherlock的背景颜色

6

我的表格上有一个ActionBarSherlock。我正在运行时读取样式信息。其中一个样式信息是ActionBar的背景颜色。我该如何在运行时更改它?颜色可以是任何RGB值。


请参考以下链接:https://dev59.com/zGkw5IYBdhLWcg3wMHum - sonida
3个回答

8
也许这可以帮到你:如何在ActionBarSherlock中设置标题颜色?,可以通过样式来实现,或者通过编程方式使用 getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ad_action_bar_gradient_bak));使用主题
// add theme in app
<application android:theme="@style/MainTheme"></application>

// MainTheme
<style name="MainTheme" parent="Theme.Sherlock.Light.DarkActionBar">       
</style>

// MainThemeGreen
<style name="MainThemeGreen" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MainTheme.ActionBarStyle</item>        
</style>

// ActionBar
<style name="MainTheme.ActionBarStyle" parent="Widget.Sherlock.Light.ActionBar">
    <item name="android:background">@drawable/bg_green_actionbar</item>
    <item name="android:titleTextStyle">@style/MainTheme.ActionBar.TitleTextStyle</item>
</style>

// Text style
<style name="MainTheme.ActionBar.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
    <item name="android:textColor">@color/White</item>
</style>

// bg_green_actionbar.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <solid android:color="#ff74af3b" />
        </shape>
    </item>
</layer-list>

之后,您可以实时更改主题:setTheme(R.styles.MainThemeGreen);

注意,不要删除HTML标记。

您仍在指定本地可绘制资源。我需要为来自Web服务的任何颜色执行此操作。 - Eric C
我看到了你的新编辑,但是我不明白这有什么帮助。应用程序启动后,我调用一个 Web 服务并返回一个颜色。假设它是 #123456。那么我该如何将其应用于你硬编码的 #FF74af3b? - Eric C

6

一种方式:

mSupportActionBar = getSupportActionBar();
mSupportActionBar.setBackgroundDrawable(new ColorDrawable(0xff123456));

其中0xff123456是您所需的ARGB整数。


5
我刚刚使用了以下代码。
 getSupportActionBar().setBackgroundDrawable(new 
   ColorDrawable(Color.parseColor("#00853c"))); 

它改变了背景颜色。希望对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接