Я пытаюсь использовать пользовательские шрифты с новым атрибутом «android:fontFamily», добавленным в Android O. Пока это работает в xml:
android:fontFamily = "@font/sf_pro_text_semibold"
используя ту же конструкцию в styles.xml, например:
<item name = "android:fontFamily">@font/sf_pro_text_semibold"</item>
приводит к следующей ошибке сборки:
Execution failed for task ':app:processDebugResources'.
Android resource linking failed C:\Users\anro.gradle\caches\transforms-2\files-2.1\4125ed89f50d00591f7f19265a14b826\res\values\values.xml: AAPT: error: resource font/sf_pro_text_semibold" (aka com.example.fonttesting:font/sf_pro_text_semibold") not found.
Многие учебники говорят, что это должно работать, но это не так. Я предполагаю, что проблема в файле build.gradle, но я даже не знаю, как заставить его работать (переход на более старую версию библиотеки поддержки не является хорошим решением). Вот мой файл build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.example.fonttesting"
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
Итак, кто-нибудь знает, как заставить пользовательские шрифты в styles.xml работать с androidx?
Я пробовал это, но снова та же ошибка.
Может быть, вы связываетесь с android.support
и androidx
обоими. Иногда ошибка AAPT возникает из-за этой ситуации.
++ имеет ли этот элемент атрибут fontFamily?
@Blasanka, я нигде не использую android.support, так что дело не в этом.
@ ДжамалАль-келани, не уверен, что ты имеешь в виду. Этот атрибут android:fontFamily является частью стиля в styles.xml, и этот стиль применяется к TextView. Но в любом случае приложение не может скомпилироваться с этой строкой в стилях: <item name = "android:fontFamily">@font/sf_pro_text_semibold"</item>
Где вы сохранили файл пользовательского шрифта?
@ShubhamPanchal, это в папке app\src\main\res\font
это кажется странным! если вы хотите создать чистое приложение и отправить его мне на @[email protected], чтобы я мог настроить, в чем проблема
Ну, на самом деле, там особо не на что смотреть. Я только что создал новый проект с пустой активностью, минимальным уровнем API 23, языком Kotlin, проверил «Использовать артефакты androidx. *» и создал каталог «шрифт» в ресурсах с пользовательским шрифтом.
AAPT: error: resource font/sf_pro_text_semibold" (aka com.example.fonttesting:font/sf_pro_text_semibold") not found.
Есть опечатка:
Удалите символ "
:
<item name = "android:fontFamily">@font/sf_pro_text_semibold</item>
вместо
<item name = "android:fontFamily">@font/sf_pro_text_semibold"</item>
Не могу поверить, что совершил такую глупую ошибку и не смог ее обнаружить. Большое спасибо!
У меня была аналогичная проблема, моя проблема была расширена в стиле
<item name = "android:fontFamily">@font/muli.ttf</item>
<item name = "fontFamily">@font/muli.ttf</item>
После удаления расширения у меня все заработало.
<item name = "android:fontFamily">@font/muli</item>
<item name = "fontFamily">@font/muli</item>
не могли бы вы добавить эту строку в CompileSdkVersion buildToolsVersion '28.0.3'