如何在代码中更改操作栏标题颜色

时间:2012-03-29 06:40:10

标签: android android-actionbar

我无法以编程方式为v11及更高版本更改机器人操作栏标题颜色。我可以在xml中完成它,但需要在代码中动态更改它。我该怎么办呢?提前谢谢。

7 个答案:

答案 0 :(得分:80)

ActionBar标题ID被隐藏,换句话说,它是内部的,并且通常无法访问它。您可以使用Resources.getIdentifier然后View.findViewById来引用它。

抓取action_bar_title的ID

int titleId = getResources().getIdentifier("action_bar_title", "id", "android");

现在,您可以将ID与TextView

一起使用
TextView abTitle = (TextView) findViewById(titleId);
abTitle.setTextColor(colorId);

答案 1 :(得分:71)

您可以使用SpannableString和ForegroundColorSpan来设置标题的颜色

    Spannable text = new SpannableString(actionBar.getTitle());
    text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    actionBar.setTitle(text);

答案 2 :(得分:30)

另一种方法是使用Html

getSupportActionBar().setTitle((Html.fromHtml("<font color=\"#FF4444\">" + getString(R.string.some_string) + "</font>")));

答案 3 :(得分:14)

如果使用v7 appcompat library(使用r22测试),则可以在Toolbar对象上调用setTitleTextColor(),以取代所有API级别的操作栏。例如:

Toolbar actionBarToolbar = (Toolbar)activity.findViewById(R.id.action_bar);
if (actionBarToolbar != null)
    actionBarToolbar.setTitleTextColor(Color.RED);

答案 4 :(得分:9)

如果您使用Sherlock Actionbar,则可以使用sherlock-actionbar-id获取支持的操作栏(Android 3.0以下)

int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");    
if ( 0 == titleId ) 
        titleId = com.actionbarsherlock.R.id.abs__action_bar_title;

答案 5 :(得分:0)

使用Kotlin和SupportActionBar使用此->

val mSpannableText = SpannableString(supportActionBar?.title)
    mSpannableText.setSpan(
        ForegroundColorSpan(Color.BLUE),
        0,
        mSpannableText.length,
        Spannable.SPAN_INCLUSIVE_INCLUSIVE
    )
    supportActionBar?.title = mSpannableText

答案 6 :(得分:0)

要使自定义颜色起作用,您需要使用 NoActionBar 例如 android:Theme.NoTitleBar 或其后代之一,然后在布局中手动添加 Toobar,然后 setSupportActionBar在您的活动onCreate()

Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

然后就可以在工具栏xml中设置标题颜色app:titleTextColor="@android:color/white"

见下文;

<androidx.appcompat.widget.Toolbar
    
  app:navigationContentDescription="@string/abc_action_bar_up_description"
  app:titleTextColor="@android:color/white"
  android:id="@+id/toolbar"
  android:layout_width="match_parent"
  android:layout_height="?attr/actionBarSize"
  app:popupTheme="@style/AppTheme.PopupOverlay"
  app:navigationIcon="?attr/homeAsUpIndicator"
  app:title="@string/app_name" 
  android:minHeight="@dimen/abc_action_bar_default_height_material" />

至少这项工作是我的?

相关问题