我无法以编程方式为v11及更高版本更改机器人操作栏标题颜色。我可以在xml中完成它,但需要在代码中动态更改它。我该怎么办呢?提前谢谢。
答案 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" />
至少这项工作是我的?