Подтвердить что ты не робот

Как изменить шрифт заголовка ActionBar при использовании AppCompat

Я хотел бы применить собственный шрифт к названию моего приложения, которое отображается в ActionBar. Раньше я не использовал библиотеку поддержки и это решение:

int titleId = getResources().getIdentifier("action_bar_title", "id",
                "android");
TextView yourTextView = (TextView) findViewById(titleId);
yourTextView.setTypeface(face);

работал отлично для меня. Но теперь я использую материальный дизайн SupportActionBar, и это вызывает исключение NullPointerException. Итак, как изменить шрифт ActionBar при использовании AppCompat?

4b9b3361

Ответ 1

Предполагая, что вы уже успешно используете новую панель инструментов AppCompat v22 + и что вы импортируете файл android.support.v7.widget.Toolbar в своей деятельности.

Итак, на вашем OnCreate у вас уже есть

toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

на этом этапе вы почти закончили:

импортировать java.lang.reflect.field;

и добавьте следующие строки:

TextView yourTextView = null;
try {
    Field f = toolbar.getClass().getDeclaredField("mTitleTextView");
    f.setAccessible(true);
    yourTextView = (TextView) f.get(toolbar);
    yourTextView.setTypeface(face);
} catch (NoSuchFieldException e) {
} catch (IllegalAccessException e) {
}

Ответ 2

Используйте панель инструментов вместо ActionBar. Следуйте инструкциям ниже, чтобы добавить панель инструментов: 1. измените тему приложения на Theme.AppCompat.Light.NoActionBar Структура проекта 2.Goto из меню "Файл", зависимостей библиотеки goto, добавления библиотеки дизайна и синхронизации вашего проекта. 3.Посмотрите свой макет, где вы хотите отобразить ActionBar, и напишите ниже код:

<android.support.v7.widget.Toolbar
    android:id="@+id/mytoolbar"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@color/pccolor"
    android:title="Services"
    app:titleTextAppearance="@style/Toolbar.TitleText"
    android:elevation="4dp">
  <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>

4. В Деятельности напишите, как показано ниже:

 Toolbar mytoolbar=(Toolbar)findViewById(R.id.mytoolbar);
    setSupportActionBar(mytoolbar);

Чтобы настроить шрифт заголовка:

fontPath = "Fonts/Roboto-Light.ttf";
    Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), fontPath);

TextView tv_ins=(TextView)FindViewById(R.id.toolbar_title);
 tv_ins.setText("mytitle");
tv_ins.setTypeface(tf);

Попробуйте это. Надеюсь, это поможет вам, если что-то не так, пожалуйста, дайте мне знать.

Ответ 3

подготовить пользовательский макет, поместить текстовое представление в action_bar_layout, а затем вызвать actionbar.setcustomlayout()