Не удалось связать ресурсы Android при попытке использовать пользовательский шрифт в styles.xml

Я пытаюсь использовать пользовательские шрифты с новым атрибутом «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?

не могли бы вы добавить эту строку в CompileSdkVersion buildToolsVersion '28.0.3'

Jamal Alkelani 27.05.2019 04:46

Я пробовал это, но снова та же ошибка.

anro 27.05.2019 04:52

Может быть, вы связываетесь с android.support и androidx обоими. Иногда ошибка AAPT возникает из-за этой ситуации.

Blasanka 27.05.2019 04:59

++ имеет ли этот элемент атрибут fontFamily?

Jamal Alkelani 27.05.2019 05:00

@Blasanka, я нигде не использую android.support, так что дело не в этом.

anro 27.05.2019 05:14

@ ДжамалАль-келани, не уверен, что ты имеешь в виду. Этот атрибут android:fontFamily является частью стиля в styles.xml, и этот стиль применяется к TextView. Но в любом случае приложение не может скомпилироваться с этой строкой в ​​стилях: <item name = "android:fontFamily">@font/sf_pro_text_semibold"</item>

anro 27.05.2019 05:14

Где вы сохранили файл пользовательского шрифта?

Shubham Panchal 27.05.2019 06:19

@ShubhamPanchal, это в папке app\src\main\res\font

anro 27.05.2019 06:36

это кажется странным! если вы хотите создать чистое приложение и отправить его мне на @[email protected], чтобы я мог настроить, в чем проблема

Jamal Alkelani 27.05.2019 08:25

Ну, на самом деле, там особо не на что смотреть. Я только что создал новый проект с пустой активностью, минимальным уровнем API 23, языком Kotlin, проверил «Использовать артефакты androidx. *» и создал каталог «шрифт» в ресурсах с пользовательским шрифтом.

anro 27.05.2019 08:36
1
10
1 259
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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>

Не могу поверить, что совершил такую ​​глупую ошибку и не смог ее обнаружить. Большое спасибо!

anro 28.05.2019 09:12

У меня была аналогичная проблема, моя проблема была расширена в стиле

<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>

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