我在为Android版本11及以上编程时,遇到了更改操作栏标题颜色的问题。我可以在xml中完成此操作,但需要在代码中动态更改它。请问我该如何解决?提前感谢。
我在为Android版本11及以上编程时,遇到了更改操作栏标题颜色的问题。我可以在xml中完成此操作,但需要在代码中动态更改它。请问我该如何解决?提前感谢。
Spannable text = new SpannableString(actionBar.getTitle());
text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
actionBar.setTitle(text);
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);
setTextColor(getResources().getColor(R.color.myColor))
УђїСИЇТў»setTextColor(R.color.myColor)
сђѓтюе Android 4.0+ СИіт»╣ТѕЉТЮЦУ»┤У┐љУАїтЙЌтЙѕжА║тѕЕсђѓ - Jonikaction_bar_subtitle
即可。 - adnealsetTitle()
方法也接受Spannable,正如@wily在他的答案中提到的那样。当文本的某些部分需要不同的颜色时,这种方式要好得多。 - Diederik另一种方式是使用Html
getSupportActionBar().setTitle((Html.fromHtml("<font color=\"#FF4444\">" + getString(R.string.some_string) + "</font>")));
Toolbar
对象上调用setTitleTextColor()
。例如:Toolbar actionBarToolbar = (Toolbar)activity.findViewById(R.id.action_bar);
if (actionBarToolbar != null)
actionBarToolbar.setTitleTextColor(Color.RED);
int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
if ( 0 == titleId )
titleId = com.actionbarsherlock.R.id.abs__action_bar_title;
val mSpannableText = SpannableString(supportActionBar?.title)
mSpannableText.setSpan(
ForegroundColorSpan(Color.BLUE),
0,
mSpannableText.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
supportActionBar?.title = mSpannableText
若要自定义颜色生效,需要使用NoActionBar
主题中的android:Theme.NoTitleBar
或其子类之一,然后在布局中手动添加Toobar
,最后在活动的onCreate()
方法中调用setSupportActionBar
。
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" />
至少这对我起作用了