Intereting Posts
Создать экскурсию в Android-приложении Ионная сборка Android – недостаточно памяти для запуска jvm Закрепить правильную интерпретацию процента преобразования CSS3 на Android AutoCompleteTextView, поддерживаемый CursorLoader Получение целых или индексных значений из предпочтений списка Пункт меню приложения Android appcompat showAsAction не работает Почему XML используется для создания макетов пользовательского интерфейса в Android? Как выполнять задачу Async повторно через определенные промежутки времени Получите MAC-адрес устройства Android без Wi-Fi Не удалось выполнить компиляцию AAPT2: неверный размер на Android 3.0 Canary 1 Я могу использовать просмотр пейджера с представлениями (а не с фрагментами) Глобальный неперехваченный обработчик исключений -> журнал электронной почты для меня? SendUserActionEvent () mView == null после нажатия кнопки Получить ширину и высоту растрового изображения без загрузки в память OnSaveInstanceState () и onRestoreInstanceState ()

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

Я делаю это

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; } } } }