Я согласен, что это не полностью поддерживается, но вот что я сделал. Вы можете использовать пользовательский вид для своей панели действий (она будет отображаться между вашим значком и вашими элементами действий). Я использую пользовательский вид, и у меня отключен собственный заголовок. Все мои действия наследуются от одного действия, которое имеет этот код в onCreate:
this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);
LayoutInflater inflator = LayoutInflater.from(this);
View v = inflator.inflate(R.layout.titleview, null);
//if you need to customize anything else about the text, do it here.
//I'm using a custom TextView with a custom font in my layout xml so all I need to do is set title
((TextView)v.findViewById(R.id.title)).setText(this.getTitle());
//assign the view to the actionbar
this.getActionBar().setCustomView(v);
И мой макет xml (R.layout.titleview в приведенном выше коде) выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent" >
<com.your.package.CustomTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:textSize="20dp"
android:maxLines="1"
android:ellipsize="end"
android:text="" />
</RelativeLayout>
Вы можете сделать это с помощью пользовательского
TypefaceSpan
класса. Он превосходитcustomView
подход, указанный выше, потому что он не ломается при использовании других элементов панели действий, таких как расширение видов действий.Использование такого класса будет выглядеть примерно так:
Пользовательскому
TypefaceSpan
классу передается ваш контекст Activity и имя гарнитуры в вашемassets/fonts
каталоге. Он загружает файл и кэширует новыйTypeface
экземпляр в памяти. Полная реализация наTypefaceSpan
удивление проста:Просто скопируйте приведенный выше класс в свой проект и внедрите его в
onCreate
метод вашей деятельности, как показано выше.источник
textAllCaps
атрибута установлено значение true в базовом TextView (например, через тему), то пользовательский шрифт не появится. Это было проблемой для меня, когда я применил эту технику к элементам панели действий.assets/fonts/
. Если вы просто выбросить файлы .ttf / .OTF под активы , а не в папке, вы должны изменить следующую строку кода соответственно:String.format("fonts/%s", typefaceName)
. Я потерял хорошие 10 минут, пытаясь понять это. Если вы этого не сделаете, вы получитеjava.lang.RuntimeException: Unable to start activity ComponentInfo{com.your.pckage}: java.lang.RuntimeException: native typeface cannot be made
источник
Начиная с версии библиотеки поддержки Android v26 + Android Studio 3.0 этот процесс стал простым!
Выполните следующие действия, чтобы изменить шрифт заголовка панели инструментов:
res > font
в соответствии со шрифтами в XMLВ
res > values > styles
вставьте следующее ( используйте ваше воображение здесь! )Вставьте новую строку в свойствах панели инструментов,
app:titleTextAppearance="@style/TextAppearance.TabsFont"
как показано нижеНаслаждайтесь пользовательским стилем заголовка Actionbar!
источник
Библиотека каллиграфии позволяет вам установить собственный шрифт через тему приложения, которая также будет применяться к панели действий.
Все, что нужно, чтобы активировать Каллиграфию, это присоединить ее к контексту вашей Деятельности:
Пользовательский атрибут по умолчанию - это
fontPath
, но вы можете предоставить свой собственный атрибут для пути, инициализируя его в своем классе Application с помощьюCalligraphyConfig.Builder
. Использованиеandroid:fontFamily
не рекомендуется.источник
Это ужасный хак, но вы можете сделать это следующим образом (поскольку action_bar_title скрыт):
Этот код предназначен для устройств после GINGERBREAD, но его можно легко расширить для работы с Actionbar Sherlock.
PS На основе комментария @pjv есть лучший способ найти идентификатор заголовка панели действий.
источник
Следующий код будет работать для всех версий. Я проверил это на устройстве с пряниками, а также на устройстве JellyBean
источник
используйте новую панель инструментов в библиотеке поддержки. Создайте свою панель действий как собственную или используйте приведенный ниже код.
Раздувание Textview не является хорошим вариантом, попробуйте Spannable String builder
скопировать ниже класса
источник
источник
typeface.ITALIC
сTypeface.ITALIC
не иметь никакого предупреждения статического членаЕсли вы хотите установить гарнитуру для всех TextViews во всей Деятельности, вы можете использовать что-то вроде этого:
И TypefaceCache:
источник
Я просто сделал следующее внутри функции onCreate ():
Я использую библиотеки поддержки, если вы их не используете, я думаю, вам следует переключиться на getActionBar () вместо getSupportActionBar ().
В Android Studio 3 вы можете добавить пользовательские шрифты, следуя этой инструкции https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html, а затем использовать свой недавно добавленный шрифт в " font_to_be_used»
источник
Чтобы добавить ответ @ Sam_D, я должен был сделать это, чтобы он работал:
Это кажется излишним - ссылка на v.findViewById (R.id.title)) дважды - но это единственный способ, который позволил бы мне это сделать.
источник
Чтобы обновить правильный ответ.
во-первых: установите заголовок в false, потому что мы используем пользовательский вид
во-вторых: создайте titleview.xml
Наконец:
СКАЧАТЬ ФАЙЛ: потому что я храню файл в облачном хранилище, поэтому у меня есть ссылка для его загрузки.
источник
Пользовательский просмотр текста не требуется!
Во-первых, отключите заголовок в toobar в своем коде Java: getSupportActionBar (). SetDisplayShowTitleEnabled (false);
Затем просто добавьте TextView внутри панели инструментов:
источник
Попробуйте использовать это
источник
Нам нужно использовать размышления для достижения этой цели
источник
ПОПРОБУЙ ЭТО
источник