Intereting Posts
Не удалось установить * .apk на устройстве '*': локального пути не существует Правильное расширение LinearLayout для создания пользовательского представления Android Volley ImageLoader – Как использовать базовую авторизацию HTTP? Возможны ли параметры в strings.xml? ScrollView alawys прокручивается на дно Как отобразить HTML-страницу из необработанной папки в res с Android-сайтом Android? Android Studio: Неожиданное исключение верхнего уровня (завершено с ненулевым значением выхода 2 ..) Расположение Android Layout слева и справа в горизонтальной компоновке Как показать всплывающее меню под панелью действий? Как сказать ProGuard хранить все в определенном пакете? Android Studio: используйте AndroidAnnotations Как я могу добавить ярлык моего приложения на рабочий стол при установке приложения? Фиксированное позиционирование в браузере Android 2.3 должно работать … не так ли? Как получить формат времени с использованием ISO-кода страны в android? Проверьте, включен ли доступ к моему местоположению – Android

Как настроить собственный шрифт для заголовка в андроиде панели инструментов

Я делаю это

toolbar = (Toolbar) findViewById(com.sports.unity.R.id.tool_bar); setSupportActionBar(toolbar); setTitle("hello"); 

Я хочу установить пользовательский шрифт здесь, в заголовке «привет», как это сделать?

Solutions Collecting From Web of "Как настроить собственный шрифт для заголовка в андроиде панели инструментов"

Чтобы использовать пользовательский заголовок на панели инструментов, все, что вам нужно сделать, это помнить, что панель инструментов – просто причудливая ViewGroup, поэтому вы можете добавить собственный заголовок так:

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar_top" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="@color/action_bar_bkgnd" app:theme="@style/ToolBarTheme" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Toolbar Title" android:layout_gravity="center" android:id="@+id/toolbar_title" /> </android.support.v7.widget.Toolbar> 

Это означает, что вы можете стилизовать TextView, но хотите, потому что это обычный текстовый файл. Поэтому в вашей деятельности вы можете получить доступ к названию так:

 Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top); TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title); 

А потом:

 Typeface khandBold = Typeface.createFromAsset(BalrogApplication.getApplication().getAssets(), "fonts/Khand-bold.ttf"); mTitle.setTypeface(khandBold); 

Я все еще хотел использовать методы заголовков Toolbars (и я не хочу иметь собственный класс панели инструментов), поэтому добавление в пользовательский TextView внутри элемента xml панели инструментов не помогло мне. Вместо этого я использовал следующий метод для поиска TextView:

 public static void applyFontForToolbarTitle(Activity context){ Toolbar toolbar = (Toolbar) context.findViewById(R.id.app_bar); for(int i = 0; i < toolbar.getChildCount(); i++){ View view = toolbar.getChildAt(i); if(view instanceof TextView){ TextView tv = (TextView) view; Typeface titleFont = Typeface. createFromAsset(context.getAssets(), "fonts/customFont"); if(tv.getText().equals(toolbar.getTitle())){ tv.setTypeface(titleFont); break; } } } } 

Вы можете использовать этот простой метод для установки специального шрифта в заголовок панели инструментов.

  Toolbar toolbar = (Toolbar) findViewById(com.sports.unity.R.id.tool_bar); TextView tv = getToolBarTextView(); tv.settext("Hello"); private TextView getToolBarTextView() { TextView titleTextView = null; try { Field f = mToolBar.getClass().getDeclaredField("mTitleTextView"); f.setAccessible(true); titleTextView = (TextView) f.get(mToolBar); Typeface font = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/mfont.ttf"); titleTextView.setTypeface(font); } catch (NoSuchFieldException e) { } catch (IllegalAccessException e) { } return titleTextView; } 
  1. Размещение шрифтов:

    • Во-первых, загрузите файл .ttf. Мой файл – Balker.ttf
    • Убедитесь, что у вас есть папка «активы». Если их нет, щелкните правой кнопкой мыши по ссылке в меню «Создать»> «Папка»> «Свойства».
    • В папке «Ресурсы» создайте новую папку и назовите ее «font»,
    • Поместите свой файл, как я сделал с Balker.ttf, в папку «font».
  2. Перейдите в java-файл действия, шрифт которого вы должны настроить. Здесь я настроил mainActivity.

      for(int i = 0; i < toolbar.getChildCount(); i++) { View view = toolbar.getChildAt(i); if(view instanceof TextView) { TextView textView = (TextView) view; Typeface myCustomFont=Typeface.createFromAsset(getAssets(),"font/Balker.ttf"); textView.setTypeface(myCustomFont); } } 

Это работает для меня

 typeFace= Typeface.createFromAsset(this.getAssets(), "fonts/myfont.ttf"); ((TextView)toolbar.getChildAt(1)).setTypeface(typeFace); 

Спасибо @gmetax, это хороший момент. Плохо получить текстовое представление для каждого действия. Мы должны написать код ниже для каждого вида деятельности:

 TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title); 

Мы уже привязываем панель инструментов, и мы используем toolbar.setTitle (). Итак, я расширяю панель инструментов и переопределяю метод setTitle следующим образом:

 @Override public void setTitle(CharSequence title) { super.setTitle(""); mTitle = (TextView) findViewById(R.id.toolbar_title); if (mTitle != null) { if (!TextUtils.isEmpty(title)) { mTitle.setText(title); } } } 

(Конечно, пользовательский шрифт должен быть установлен в CustomTextView class.setTypeface). Теперь мы можем использовать так:

 toolbar.setTitle("bla bla"); 

Я все еще хотел использовать методы заголовков Toolbars, поэтому добавление пользовательского TextView внутри элемента xml панели инструментов не помогло мне. Вместо этого я использовал следующий метод для поиска TextView:

 public static void applyFontForToolbarTitle(Activity context){ Toolbar toolbar = (Toolbar) context.findViewById(R.id.app_bar); for(int i = 0; i < toolbar.getChildCount(); i++){ View view = toolbar.getChildAt(i); if(view instanceof TextView){ TextView tv = (TextView) view; Typeface titleFont = Typeface. createFromAsset(context.getAssets(), "fonts/customFont"); if(tv.getText().equals(context.getTitle())){ tv.setTypeface(titleFont); break; } } } }