Как изменить размер текста на панели инструментов?

94

Я хочу изменить размер текста в Toolbar. Потому что в моем приложении Toolbarтекст имеет разные размеры как для ландшафтного, так и для портретного режима.

Можно ли изменить размер текста в Toolbar?

Апурва
источник

Ответы:

287

Использование app:titleTextAppearance:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="?actionBarSize"
    android:id="@+id/toolbar"
    app:titleTextAppearance="@style/Toolbar.TitleText" />

и переопределите размер заголовка по умолчанию в собственном стиле:

<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">18sp</item>
</style>

Результат:

Снимок экрана

Вукашин Манойлович
источник
Работает, спасибо за решение! Сэкономил много времени!
hetsgandhi
23

например, это ваша панель инструментов

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:gravity="center"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

вы можете просто добавить этот вид

    app:titleTextAppearance="@style/yourstyle"

style.xml

  <style name="yourstyle" parent="@style/Base.TextAppearance.AppCompat.Title">
    <item name="android:textSize">20sp</item>
</style>

как это...

Massaimara98
источник
почему-то android:gravity="center"не устанавливает для меня центрированное выравнивание ....: - /
Mobigital
5

Вы можете добавить TextViewна свою панель инструментов и настроить по своему усмотрению:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent">
    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textSize="25sp"/>
</android.support.v7.widget.Toolbar>
Симас
источник
4
Кажется, это ответ, который подходит для приложений, поддерживающих API <21. titleTextAppearance - хорошее решение, но работает только с API 21 и выше. Однако есть несколько тонкостей, с которыми нам нужно справиться при использовании этого решения. Если вы используете SearchView, расширенная версия представления не будет растягиваться до левого края. Вместо этого он будет растягиваться только до правого края недавно добавленного текстового представления заголовка. Таким образом, вам придется внести здесь некоторые изменения, но, опять же, это особый случай. В общем, это хорошее решение для любой версии платформы.
Deepak GM
4

[Optional steps 1 & 2)

  1. Поместите файл шрифта в папку «Project / app / src / main / assets / fonts /».

Затем создайте объект Typeface из файла шрифта как:

Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/font_name.ttf");
  1. Теперь получите дочерний элемент (текстовое представление заголовка панели инструментов) из существующей панели инструментов, панели инструментов по умолчанию и передайте объект гарнитуры, который мы создали выше.
((TextView) toolbar.getChildAt(0)).setTypeface(typeFace); // set custom typeface - font
  1. Наконец, измените размер текста в текстовом представлении заголовка панели инструментов.
((TextView) toolbar.getChildAt(0)).setTextSize(30); // set title font size
Оми Шах
источник
2
Добро пожаловать в SO! Пожалуйста, добавьте описание в подтверждение своего ответа.
Махиб
1
этот ответ пришел в сообщениях низкого качества в SO .... Не могли бы вы добавить комментарий к своему ответу? Объясните свою логику и дайте небольшой комментарий о том, для чего предназначен ваш код. Это поможет OP, но также послужит комментарием для будущих пользователей
Рам Гадиярам,
Если у вас есть значок навигации, вы должны использовать getChildAt (1) :)
Габор
3

Попробуйте это в onCreate:

android.support.v7.app.ActionBar actionbar = getSupportActionBar();
TextView textview = new TextView(MainActivity.this);
RelativeLayout.LayoutParams layoutparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

textview.setLayoutParams(layoutparams);
textview.setText(getString(R.string.your_string));
textview.setTextColor(Color.WHITE);
textview.setTextSize(18);

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionbar.setCustomView(textview);

Это взято с Android-Examples.com .

Морза
источник