Как выделить часть заголовка Actionbar жирным шрифтом

#android #android-actionbar #text-styling

#Android #android-actionbar #оформление текста

Вопрос:

я хотел бы иметь заголовок actionbar типа «titlepart1titleparttwo«. Но, как я правильно понимаю, с помощью темы вы можете либо выделить весь заголовок жирным шрифтом, либо нет, но не частично. Есть ли какой-либо обходной путь?

 <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">#81CFEB</item>
    <item name="android:textStyle">bold</item>
</style>
  

Ответ №1:

На самом деле нет необходимости использовать темы.

CharSequence экземпляры могут содержать информацию о разметке. Вы можете добавить интервалы вручную, или вы можете использовать Html класс, чтобы упростить задачу. Например:

 actionBar.setTitle(Html.fromHtml("titlepart1<b>titleparttwo</b>"));
  

Комментарии:

1. это здорово! но почему там говорится, что вызов метода может привести к нулевому указателю?

2. @fullMoon, вероятно, потому, что getActionBar() может возвращать значение null для действий, у которых его нет. Вы можете проверить if (actionBar != null) ... , если хотите.

Ответ №2:

То, что ответил матиаш, хорошо, но это не собственный метод

Вы должны попробовать это, также это будет быстрее

 getSupportActionBar().setDisplayShowTitleEnabled(true);
SpannableStringBuilder str = new SpannableStringBuilder("HelloWorld");
str.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), 5, 10,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setTitle(str);