#android #android-layout
#Android #android-макет
Вопрос:
Я хочу реализовать CollapsingToolbarLayout в моем приложении (я хочу, чтобы это было похоже на эффект параллакса в Play Store)
Я видел много вопросов на самом StackOverflow, а также на сайте разработчика Android.
Проблема в том, что я всегда получаю сообщение об ошибке в IDE (Android Studio)
The following classes could not be instantiated:
- android.support.design.widget.CollapsingToolbarLayout
Если я все равно выполню это действие на своем телефоне, приложение выйдет из строя с ошибкой
Caused by: java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Drawable;I)V in class Landroid/support/v4/graphics/drawable/DrawableCompat; or its super classes (declaration of 'android.support.v4.graphics.drawable.DrawableCompat' appears in /data/data/com.hemal.eventhub2/files/instant-run/dex/slice-com.android.support-support-v4-24.0.0_b8d850cc5f06d621d9211f2cbc20e32dfc36ae82-classes.dex)
at android.support.design.widget.CollapsingToolbarLayout.setStatusBarScrim(CollapsingToolbarLayout.java:663)
Я почти уверен, что это как-то связано с конфликтующими импортами или зависимостями.
Сценарий gradle моего модуля приложения выглядит следующим образом
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.hemal.eventhub2"
minSdkVersion 19
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.volley:volley:1.0.0'
compile 'com.android.support:design:23.2.1'
compile 'com.google.android.gms:play-services-auth:9.6.1'
compile 'com.google.firebase:firebase-core:9.6.1'
compile 'com.google.firebase:firebase-messaging:9.6.1'
}
apply plugin: 'com.google.gms.google-services'
Ниже приведены некоторые из импорта в MainAcitivity моего приложения
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
Являются ли вышеупомянутые импорта или зависимости конфликтующими, которые вызывают проблемы.
Я также обновил свою Android Studio до 2.2.1 с 1.5.1, надеясь, что это может решить проблему
Не могли бы вы, пожалуйста, указать мне, какие SDK, импорт и зависимости я должен удалить, сохранить или загрузить, чтобы заставить CollapsingToolbarLayout работать.
Комментарии:
1. Ваш целевой SDK равен 21. Ваш минимальный SDK равен 19. Но, тем не менее, вы скомпилировали библиотеки для SDK 23. Затем ошибка относится к
com.android.support-support-v4-24.0.0
(SDK 24). Итак, да, вероятно, проблема с зависимостями, но трудно определить, какая из них вам нужна.2. И эта проблема была опубликована здесь. code.google.com/p/android/issues/detail?id=211108
3. Итак, у меня установлены SDK для API 19, 21,23, и я установил свой minSdk равным 19 при создании проекта, а цель — 21. Должен ли я изменить целевую или минимальную версию SDK или начать новый проект с нуля и добавить к нему исходные файлы, надеясь, что это может сработать? Сейчас я потратил на это около 4 часов.
4. Вам действительно нужен только SDK для
compileSdkVersion
установленного. Согласно той проблеме, которую я опубликовал, обновление Android Studio, похоже, нарушило ее. Вы можете попробовать отключить мгновенный запуск, но я не уверен, исправит ли это.