:색상 상태 목록은 그리기 모양에 인식되지 내가 그릴 수 <code>my_background_drawable.xml</code> 다음과 같은 정의합니다
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="@color/color_stateful" />
</shape>
</item>
<item android:drawable="@drawable/selector_png_drawable" />
</layer-list>
그리고 나는 또한 색상 상태 목록 자원 color_stateful.xml
다음과 같은 정의 :
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="#FF00ff00"/>
<item android:color="#FFff0000"/>
</selector>
내가 배경으로 my_background_drawable
를 주어진 일부보기의 경우 내 모양에 대해 color_stateful.xml
에 정의 된 색상의 변화를 관찰 할 수 없으며 뷰 상태는 실제로 변경됩니다 (selector_png_drawable.xml
은 표시기 임).
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- This doesn't work
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="@color/color_stateful" />
</shape>
</item>
-->
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="#FF00ff00" />
</shape>
</item>
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="#FFff0000" />
</shape>
</item>
</selector>
</item>
<item android:drawable="@drawable/selector_png_drawable"" />
</layer-list>
그래서 색 상태 정보가 ColorStateList
자원이 ShapeDrawable
내에서 사용하는 경우 단지 분실 또는 내가 그 일을하고 있다는 것이 사실이다 : 나는 다음과 같은 방법으로 내 my_background_drawable.xml
을 수정할 때
그러나 모든 것이 괜찮습니다 잘못된?
Android Lollipop의 경우 더 이상 true가 아니며 'ColorStateList'가 올바르게 구문 분석됩니다. – keyboardr
Lollipop에서 작동하는지 확인할 수 있습니다. <21 테스트 기기가 제대로 작동하지 않는 이유가 무엇인지 정말 혼란스러워했습니다! – Tom
pre-lollipop 장치의 명백한 (그리고 끔찍한) 대안은 각 '''color' 속성에 의해서만 다른 상태 인만큼 많은' '을 생성하고 원래의' '드로어 블을 각각의 ''을 참조하는'StateListDrawable '. 그 물건의 극악은''요소 (하드 코딩 된 값 없음) 내부의 리소스 참조만을 사용함으로써 약간 완화 될 수 있으며 원래의 ''은'drawable-v21' 디렉토리에 보관 될 수 있습니다 (가능하면 완전히 나중에 전환). _blargh_ –
desseim