#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);