2014-12-20 1 views
1

클립 레벨을 설정하려면 ClipDrawable에 액세스해야합니다.ClipDrawable getDrawable() StateListDrawable을 반환합니다.

ClipDrawable drawable = (ClipDrawable) getResources().getDrawable(R.drawable.left_arrow); 

내가 얻을 :이 같은 ClipDrawable로 그릴 수 left_arrow를 검색 할 때

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <rotate 
     android:fromDegrees="45" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toDegrees="45"> 
     <shape 
     android:shape="rectangle"> 
     <size 
      android:width="250dp" 
      android:height="250dp"/> 
     <solid 
      android:color="#ffffff"/> 
     </shape> 
    </rotate> 
    </item> 
</selector> 

:

@drawable/left_arrow :

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <clip 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:drawable="@drawable/rotated_square" 
     android:clipOrientation="horizontal" 
     android:gravity="left" /> 
    </item> 
</selector> 

@drawable/rotated_square 여기에 그릴 수있다 다음과 같은 오류가 난 n 개의 로그 캣은 :

Caused by: java.lang.ClassCastException: android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.ClipDrawable 
     at com.vcapra1.pingpongscoreboard.MainActivity.onCreate(MainActivity.java:89) 

ClipDrawable는 StateListDrawable로 반환되고있다?

+0

사실은 첫 번째 요소가 "귀하의 드로어 블"인 statelistdrawable입니다. – rupps

답변

2

left_arrow<selector>을 루트 요소로 가지고 있기 때문에 StateListDrawable입니다. ClipDrawable으로 지정하려면 및 <item> 태그없이 <clip> 요소를 XML 루트로 직접 사용해야합니다.

관련 문제