24.2.1 및 배경 테마 참조 충돌하는 다소 않습니다 이런 식으로 뭔가 :안드로이드 사전 L, APPCOMPAT-V7 : 난 그냥 예전의 코드를 상속
(이름 변경)
<attr name="my_reference" format="reference"/>
<style name="my_style_a" parent="@style/AppTheme">
<item name="my_reference">@drawable/drawable_a</item>
</style>
<style name="my_style_b" parent="@style/AppTheme">
<item name="my_reference">@drawable/drawable_b</item>
</style>
drawable_a 및 drawable_b :
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?my_reference"
android:src="@drawable/image" />
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#ff000000" />
</shape>
</item>
</selector>
그리고 레이아웃의 조각이 17,451,515,
트릭은 스타일 (이것은 사용자로 변경해야합니다 버튼을 클릭) 프로그램로드이다 (이것은 5.0에서 잘 작동)
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(context, themeId);
LayoutInflater inflater = LayoutInflater.from(contextThemeWrapper);
View view = inflater.inflate(R.layout.activity_layout, parent, false);
이 마지막보기를 팽창 아래 안드로이드 4.4에 예외가 발생
Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x7f010010 a=-1}
at android.content.res.Resources.loadDrawable(Resources.java:1967)
at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
at android.view.View.<init>(View.java:3337)
at android.widget.ImageView.<init>(ImageView.java:114)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:57)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:53)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1013)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1072)
at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
그리고 com.android.support:appcompat-v7 라이브러리를 24+ (새 API가 필요하기 때문에)로 업데이트 한 후에 만 발생했습니다. appcompat-v7, version 18 (또는 이와 비슷한)에서 잘 작동하지만 이전 라이브러리를 유지할 수있는 옵션이 아닙니다. (L-L 버전 이전에는 지원을 취소 할 수 없습니다 ...)
이 간단한 수정 (애플 리케이션의 절반을 다시 작성 포함)?