Вопрос по android, actionbarsherlock – Как я могу изменить стиль шрифта на ActionBarSherlock

7

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

Моя тема на данный момент (применимо ко всему моему заявлению выглядит следующим образом):

<style name="Theme.MyAppDefaults" parent="@style/Theme.Sherlock.Light">
         <item name="android:textSize">@dimen/default_textsize</item>
         <item name="actionBarSize">@dimen/action_bar_height</item>
</style>

Обратите внимание, что размер шрифта установлен так же, как и для всех видов в моем приложении. Только не шрифт ActionBar.

Ваш Ответ

2   ответа
7

<style name="Theme.MyApp.Default" parent="@style/Theme.Sherlock.Light">
       <item name="actionBarStyle">@style/MyApp.SherlockActionBarStyle</item>
       <item name="android:actionBarStyle">@style/MyApp.SherlockActionBarStyle</item>
</style>

<style name="MyApp.SherlockActionBarStyle" parent="@style/Widget.Sherlock.ActionBar">
       <item name="titleTextStyle">@style/MyApp.ActionBar.TextAppearance</item>
</style>

<style name="MyApp.ActionBar.TextAppearance" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Menu">
      <item name="android:textSize">@dimen/default_textsize</item>
      <item name="android:textColor">@color/dark_grey</item>
 </style>

Обратите внимание, что размер текста в названном стилеMyApp.ActionBar.TextAppearance, Также в соответствии сActionBarSherlock тема должна быть установлена как для префиксных атрибутов Android, так и для обычных атрибутов (см. actionBarStyle в стиле Theme.MyApp.Default выше.)

это не позволяет настраивать шрифты. есть ли способ сделать это?
10

вы можете добавить собственный вид, например:

<TextView
    android:id="@+id/action_custom_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="My Custom title"
    android:textColor="#fff"
    android:textSize="18sp" />

Затем скрыть фактический заголовок и показать пользовательский вид.

    _actionBar.setDisplayShowTitleEnabled(false);

     LayoutInflater inflater = LayoutInflater.from(this);
     View customView = inflater.inflate(R.layout.custom_action_layout, null);

     TextView titleTV = (TextView) customView.findViewById(R.id.action_custom_title);
     // you can apply a custom typeface here or do sth else...

     _actionBar.setCustomView(customView);
     _actionBar.setDisplayShowCustomEnabled(true);

Вот и все! Если вас интересует, какой размер шрифта по умолчанию для заголовка ActionBar, вы можете выбрать его.

Нет, это не так. Кнопка «Домой», вкладки, элементы действий останутся прежними;)
В любом случае, удачи в программировании Android ActionBar;)
Это неплохое решение, я бы предпочел тему только для XML. Меньше кода для поддержки. Diederik
Будет ли это также удалить кнопку «Домой» и другие виды в панели действий? Diederik
Я не думаю, что будет хорошей идеей заменить заголовок пользовательским представлением, если все, что вы хотите отобразить, - это фрагмент текста. Пользовательские виды предназначены для более сложных макетов, которые не поддерживаются исходной панелью действий. Установка стиля с использованием titleTextStyle должно быть достаточно.

Похожие вопросы