В моем проекте Android Studio я получаю предупреждения о любых атрибутах app:srcCompat = "@drawable/..."
в моих макетах XML:
<ImageView
android:id = "@+id/leftNav"
android:layout_width = "wrap_content"
android:layout_height = "46dp"
android:layout_marginStart = "16dp"
android:layout_marginLeft = "16dp"
android:layout_marginTop = "16dp"
android:adjustViewBounds = "true"
android:clickable = "true"
android:focusable = "true"
android:onClick = "leftNav_Click"
android:scaleType = "fitCenter"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toTopOf = "parent"
app:srcCompat = "@drawable/ic_chevron_left_black_24dp"<!--warning-->
tools:ignore = "ContentDescription"
/>
Предупреждение:Inspection info:To use VectorDrawableCompat, you need to make two modifications to your project. First, set android.defaultConfig.vectorDrawables.useSupportLibrary = true in your build.gradle file, and second, use app:srcCompat instead of android:src to refer to vector drawables.
Поэтому я предпринимаю следующие шаги, как указано в файле приложения build.gradle
:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.testappbehaviourchart"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
android.defaultConfig.vectorDrawables.useSupportLibrary = true //added to resolve VectorDrawableCompat issue
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0-alpha03'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.viewpager:viewpager:1.0.0'
implementation "com.android.support:support-v4:28.0.0"
implementation "com.android.support:support-compat:28.0.0"
implementation 'com.google.android.material:material:1.0.0'
}
Это, кажется, подавляет предупреждения, однако теперь я получаю новое фатальное исключение во время выполнения при раздувании:
`E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.testappbehaviourchart, PID: 21284
android.view.InflateException: Binary XML file line #165: Error inflating class <unknown>`
Я сузил это до любых атрибутов android:background = "@drawable/..."
как показано здесь внутри TableRow
внутри TableLayout
:
<View
android:id = "@+id/view_m1"
android:layout_width = "match_parent"
android:layout_height = "82dp"
android:background = "@drawable/ic_simplebox"
android:minWidth = "82dp"
tools:layout_editor_absoluteX = "105dp"
tools:layout_editor_absoluteY = "101dp"
/>
Эти фоновые рисунки работали нормально, прежде чем я добавил эту строку в файл градиента.
Примечания:
tools:ignore = "VectorDrawingCompat"
, чтобы игнорировать первое предупреждение, но я не уверен в последствиях, которые это повлечет.minSdkVersion
как 16.@drawable/ic_simplebox
XML:<vector android:height = "24dp" android:viewportHeight = "100"
android:viewportWidth = "100" android:width = "24dp" xmlns:android = "http://schemas.android.com/apk/res/android">
<path android:fillColor = "#E0171C20" android:name = "Shape 1 copy" android:pathData = "m20 100v-5h60v5h-60z"/>
<path android:fillColor = "#E0171C20" android:name = "Shape 1 copy 2" android:pathData = "m0 20h5v60h-5v-60z"/>
</vector>
@drawable/ic_chevron_left_black_24dp
XML:<vector android:height = "24dp" android:tint = "#667573"
android:viewportHeight = "24.0" android:viewportWidth = "24.0"
android:width = "24dp" xmlns:android = "http://schemas.android.com/apk/res/android">
<path android:fillColor = "#FF000000" android:pathData = "M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z"/>
</vector>
Привет @Goutham, я добавил xml выше. Когда вы говорите «Я так не думаю», вы имеете в виду предупреждение или исключение?
Как вы упомянули, ваша минимальная версия SDK - 16, но приложение: srcCompat будет работать с библиотекой поддержки Android 23.3.0, поэтому вам нужно правильно обрабатывать мобильные телефоны ниже леденца. Думаю, "android:src" может помочь.
Имеет ли значение, что макет XML, содержащий android:background = "@drawable/ic_simplebox"
(вызывает исключение инфлятора), раздувается в моем классе PagerAdapter? Я попытался добавить это в PagerAdapter, но это не сработало.
Добавьте эти зависимости в ваш файл уровень приложения:
dependencies {
implementation 'com.mikhaellopez:circularimageview:3.2.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
}
Оказывается, вы не можете использовать векторные рисунки на фоне с помощью библиотеки поддержки.
Если внимательно читать, то здесь на это намекает (правда, "опущением"):
Developer.Andriod — решение для обратной совместимости векторных рисунков
Я так не думаю, это будет работать до версии леденца. Можете ли вы поделиться файлами для рисования.