Ошибка
ошибка: атрибут стиля 'app: attr / fontFamily' не найден.
Сообщение {kind = ERROR, text = error: style attribute 'app: attr / fontFamily' не найдено.
<style name = "RadioButtonCustomStyle" parent = "Widget.AppCompat.CompoundButton.RadioButton">
<item name = "android:textColorPrimaryDisableOnly">#f44336</item>
<item name = "android:textColor">#607ba3</item>
<item name = "app:fontFamily">@font/raleway_medium</item>
</style>
Я добавил raleway_medium.ttf в приложение / активы / шрифт / raleway_medium.ttf
Спасибо @RutvikBhatt, но в этом процессе это заставляет меня повторять процесс много раз
создайте такой метод, как public static void setTypeface(RadioButton radioButton){//your code to set typeface}, в классе Utils и вызовите его из любого места, например Utils.setTypeface(objRadio);
Добавьте свой шрифт в папку font (app / res / font).
После этого вы можете использовать текстовое представление и установить шрифт
<TextView
android:id = "@+id/ID"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:fontFamily = "@font/YourFont"
android:text = "@string/YourText"
android:textColor = "@color/YourColor"
android:textSize = "20dp" />
В своем стиле вы можете попробовать заменить "app: fontFamily" на "android: fontFamily"
Надеюсь, это поможет
Мое решение работает, ребята, зачем вы мне -1 ставите без экспликации xD?
Я не проверял это, но на странице разработчиков Android написано, что ваше решение не работает с API 14 - возможно, это причина
Вы можете сделать это, поместив свой шрифт в папку с ресурсами и используя приведенный ниже код:
Typeface tf = Typeface.createFromAsset(getAssets(), "your_font.ttf");
yourTextView.setTypeface(tf);
Но мне сложно повторить .setTypeFace для нескольких представлений.
К сожалению, это единственный способ, которым я знаю :(
Есть библиотека под названием «Каллиграфия». Он используется в таких случаях, как ваш - для замены шрифтов во всех представлениях на старых телефонах. Если я прав, он не поддерживает ресурсы шрифтов, а только простые файлы .ttf. См .: https://github.com/chrisjenx/Calligraphy
Я работаю над библиотекой с поддержкой ресурсов шрифтов для старых телефонов. Он работает чище, чем Каллиграфия, но сама библиотека очень велика, поэтому она может не подходить вам лучше всего. Фиксация поддержки шрифтов хорошо извлечена, и вы можете найти ее здесь: https://github.com/ZieIony/Carbon/commit/baefcfb1941ecc1b4e293f31f5220ab7abaf4584
И существенная часть ответа - это следующий метод. Я предполагаю, что это было взято из источников компонентов материала. Вы можете добавить его в свои текстовые поля и кнопки, чтобы использовать его для обработки атрибута xml.
private void handleFontAttribute(TypedArray appearance, int textStyle, int attributeId) {
WeakReference<android.widget.TextView> textViewWeak = new WeakReference<>(this);
AtomicBoolean asyncFontPending = new AtomicBoolean();
ResourcesCompat.FontCallback replyCallback = new ResourcesCompat.FontCallback() {
@Override
public void onFontRetrieved(@NonNull Typeface typeface) {
if (asyncFontPending.get()) {
android.widget.TextView textView = textViewWeak.get();
if (textView != null)
textView.setTypeface(typeface, textStyle);
}
}
@Override
public void onFontRetrievalFailed(int reason) {
}
};
try {
int resourceId = appearance.getResourceId(attributeId, 0);
TypedValue mTypedValue = new TypedValue();
Typeface typeface = ResourcesCompat.getFont(getContext(), resourceId, mTypedValue, textStyle, replyCallback);
if (typeface != null) {
asyncFontPending.set(true);
setTypeface(typeface, textStyle);
}
} catch (UnsupportedOperationException | Resources.NotFoundException ignored) {
}
}
Вам нужно установить шрифт программно, например, ответ это