将目标SDK版本更新为24.0.0后,fromHtml
变为strikethroughed,并返回弃用警告。在设置操作栏的标题时,需要更改哪些内容才能解决此错误?
最低API为17
actionBar.setTitle(Html.fromHtml("<font color='#FFFFFF'>" + getResources().getString(R.string.welcome) + "</font>"));
&#39; fromHtml(java.lang.String中)&#39;已弃用
答案 0 :(得分:2)
如果minSdkVersion
为24或更高,请使用the version of fromHtml()
that takes some flags as a parameter。 AFAIK,FROM_HTML_MODE_LEGACY
将是用于与较旧的无标记fromHtml()
兼容的标志值。
如果minSdkVersion
低于24,则您的选择是:
始终使用fromHtml()
,可能使用快速修复( Alt-Enter )来取消Lint警告
同时使用fromHtml()
的两个版本:如果您的应用在API Level 24+设备上运行,则会带有标记,或者在旧设备上没有标记的那个
后者看起来像:
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.N) {
actionBar.setTitle(Html.fromHtml(..., Html.FROM_HTML_MODE_LEGACY));
}
else {
actionBar.setTitle(Html.fromHtml(...));
}
(其中...
是您要转换的HTML)
但请注意,如果您只是尝试更改整个操作栏标题的颜色,请使用Sandro Machado's solution。 Html.fromHtml()
和类似的基于Spanned
的解决方案适用于单个TextView
内的不同文本(或使用TextView
的内容)需要不同颜色的情况,例如行动吧)。
答案 1 :(得分:2)
您应该使用其他方法。
如果您使用工具栏:
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setTitle(R.string.app_name);
toolbar.setTitleTextColor(getResources().getColor(R.color.someColor));
setSupportActionBar(toolbar);
风格:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
</style>
<style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
</style>
<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/red</item>
</style>
</resources>
在此处查找更多方式:ActionBar text color