Android устанавливает шрифт Roboto жирным шрифтом, курсивом, обычным шрифтом ... (что-то вроде пользовательского семейства шрифтов) - PullRequest
4 голосов
/ 02 марта 2012

Я знаю, как программно установить собственный шрифт в приложении для Android.Есть ли способ загрузить гарнитуру для пользовательского шрифта (ресурсы), и платформа Android будет использовать правильный файл, основанный на полужирном, курсиве и т. Д.

Например, сейчас я пытаюсь установить шрифт Roboto на TextView

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/Roboto/Roboto-Regular.ttf");
textView.setTypeface(typeface);

Работает нормально.Но поскольку я установил TextView внутри макета xml на жирный, текст не выделен жирным шрифтом

<TextView
    android:id="@+id/my_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="50dp"
    android:textStyle="bold"
    android:gravity="center"
    android:text="@string/my_text"
    android:textColor="@color/my_foreground"
    android:textSize="24dp" />

Как правильно загрузить гарнитуру из ресурсов, чтобы это работало?

textView.setTypeface(typeface, Typeface.BOLD);

Внутри моих активовdir есть только одно «семейство шрифтов»

Roboto-Black.ttf
Roboto-BlackItalic.ttf
Roboto-Bold.ttf
Roboto-BoldCondensed.ttf
Roboto-BoldCondensedItalic.ttf
Roboto-BoldItalic.ttf
Roboto-Condensed.ttf
Roboto-CondensedItalic.ttf
Roboto-Italic.ttf
Roboto-Light.ttf
Roboto-LightItalic.ttf
Roboto-Medium.ttf
Roboto-MediumItalic.ttf
Roboto-Regular.ttf
Roboto-Thin.ttf
Roboto-ThinItalic.ttf

Как загрузить все шрифты внутри одной гарнитуры / семейства?

Ответы [ 2 ]

3 голосов
/ 12 сентября 2012

Не уверен, если это хорошая идея, чтобы опубликовать ссылку, но в любом случае ... Вот мой пост в блоге на эту тему, у него есть класс, который полностью решает эту проблему.http://anton.averin.pro/2012/09/12/how-to-use-android-roboto-font-in-honeycomb-and-earlier-versions/

2 голосов
/ 14 марта 2012

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

Например, если в макете XML задано android: textStyle = "bold", вы можете сделать это в своем коде, чтобы сохранить жирный стиль:

Typeface currentTypeFace = textView.getTypeface();
if (currentTypeFace != null && currentTypeFace.getStyle() == Typeface.BOLD) {
    textView.setTypeface(tf, Typeface.BOLD);
} else {
    textView.setTypeface(tf);
}
...