Недавно я включил в свой проект библиотеку appcompat v7. Пытаясь избавиться от множества ошибок, я обновил большинство своих файлов SDK и изменил целевую версию SDK на 23 с 21. Проблема в том, что мой старый код для разработки переключателя навигационного ящика (знак гамбургера/знак стрелки) теперь не работает и выдает и показывает ошибки в файлах через eclipse.
Вот код:
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">false</item>
<item name="barSize">16sp</item>
<item name="gapBetweenBars">4sp</item>
<item name="color">@android:color/white</item>
</style>
Вот его реализация в моей пользовательской теме:
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
Ошибка Eclipse гласит: не найден ресурс, соответствующий данному имени: attr «barSize».
Когда я это комментирую, приложение запускается, но вылетает с журналом ошибок:
09-20 01:09:39.852: E/AndroidRuntime(1662): FATAL EXCEPTION: main
09-20 01:09:39.852: E/AndroidRuntime(1662): Process: com.site.app, PID: 1662
09-20 01:09:39.852: E/AndroidRuntime(1662): java.lang.NoSuchMethodError: No static method getLayoutDirection(Landroid/graphics/drawable/Drawable;)I in class Landroid/support/v4/graphics/drawable/DrawableCompat; or its super classes (declaration of 'android.support.v4.graphics.drawable.DrawableCompat' appears in /data/app/com.site.app-2/base.apk)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.support.v7.graphics.drawable.DrawerArrowDrawable.draw(DrawerArrowDrawable.java:337)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.widget.ImageView.onDraw(ImageView.java:1209)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.View.draw(View.java:15210)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.View.updateDisplayListIfDirty(View.java:14144)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.View.getDisplayList(View.java:14167)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.View.draw(View.java:14934)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.ViewGroup.drawChild(ViewGroup.java:3410)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3204)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.View.updateDisplayListIfDirty(View.java:14139)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.View.getDisplayList(View.java:14167)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.View.draw(View.java:14934)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.ViewGroup.drawChild(ViewGroup.java:3410)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3204)
09-20 01:09:39.852: E/AndroidRuntime(1662): at android.view.View.draw(View.java:15213)
...
Этот же код работал, когда я компилировал с API 21. Есть идеи, как стилизовать стрелку переключения ящика с помощью API 23?