Пользовательский набор текста Android TextView приводит к тому, что гравитация перестает работать

Обновить

Это только происходит с Roboto-Italic.ttf. Если вы столкнулись с этой проблемой, попробуйте другое семейство шрифтов.


Я сталкиваюсь со странной проблемой при применении набора текста к TextView. Имя приложения "Контакт" находится в LinearLayout с android:gravity="center" установить, что заставляет его быть хорошо отцентрировано, как видно на изображении "До" ниже. Когда я устанавливаю гарнитуру, по какой-то причине гравитация перестает работать. Вот как я устанавливаю гарнитуру:

tvAppName.setTypeface(
  Typeface.createFromAsset(getActivity().getAssets(),"fonts/Roboto-Italic.ttf"));

Есть идеи, почему это может происходить? Я пытался установить гравитацию программно, но это не помогло. Комментирование этой строки приводит к тому, что текст возвращается к центру.

До

Imgur

После

Imgur

1 ответ

Файл Roboto-Italic.ttf с сайта Google, похоже, поврежден или несовместим. Обходной путь - использовать обычный шрифт Roboto, но в качестве второго аргумента укажите курсив:

Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Normal.ttf")); 
tvAppName.setTypeface(tf, Typeface.ITALIC);

Это подделывает курсив, накладывая перекос в текст. Таким образом, теоретически это выглядит не так хорошо, но оно решает проблему гравитации и других атрибутов макета, не работающих с настоящим Roboto Italic.

Другие вопросы по тегам