2013-02-25 2 views
2

에서 을 선택하십시오. 레벨 목록 XML에 정의 된 드로어 블 중 하나 인 android:drawable 속성에 대해 어떻게해야합니까?
많은 작은 XML 파일을 정의하지 않도록 레벨 목록 XML 자체에 드로어 블을 정의하고 있습니다.
Android XML의 레벨 목록에서 드로어 블을 선택

<?xml version="1.0" encoding="utf-8"?> 
<level-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:maxLevel="0"> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"> 
      <gradient 
       android:startColor="@color/empty" 
       android:endColor="@android:color/white" 
       android:angle="90" /> 

     </shape> 
    </item> 

    <item android:maxLevel="1"> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle" > 
      <gradient 
       android:startColor="@color/low" 
       android:endColor="@android:color/white" 
       android:angle="90" /> 

     </shape> 
    </item> 

    <item android:maxLevel="2"> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"> 
      <gradient 
       android:startColor="@color/middle" 
       android:endColor="@android:color/white" 
       android:angle="90" /> 

     </shape> 
    </item> 

    <item android:maxLevel="3"> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"> 
      <gradient 
       android:startColor="@color/high" 
       android:endColor="@android:color/white" 
       android:angle="90" /> 

     </shape> 
    </item> 

    <item android:maxLevel="4"> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"> 
      <gradient 
       android:startColor="@color/full" 
       android:endColor="@android:color/white" 
       android:angle="90" /> 

     </shape> 
    </item> 

</level-list> 

답변

2

불가능합니다. ImageView에 대한 속성과 같은 것을 기대하면서 같은 생각을 염두에두고 검색했습니다. Android:level과 같은 것입니다.

그러나 아니요, setLevel 메소드에는 XML 속성에 해당하는 요소가 없습니다. 귀하와 (와)는 프로그래밍 방식으로 setLevel에 전화해야합니다.

0

API 24 이상에서는이 기능이 지원됩니다. android:level<scale> 요소에 있습니다. 0에서 10000 범위의 초기 드로어 블 레벨을 지정하고 <layer-list>에서 이와 같이 사용할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@android:id/background" 
      android:gravity="center_vertical|fill_horizontal"> 
     <shape android:shape="rectangle" 
      android:tint="?attr/colorControlNormal"> 
      <size android:height="4dp" /> 
      <solid android:color="@android:color/white_disabled_material" /> 
     </shape> 
    </item> 
    <item android:id="@android:id/secondaryProgress" 
      android:gravity="center_vertical|fill_horizontal"> 
     <scale android:scaleWidth="100%" 
      android:level="2000"> 
      <shape android:shape="rectangle" 
       android:tint="?attr/colorControlActivated" > 
       <size android:height="4dp" /> 
       <solid android:color="@android:color/black" /> 
      </shape> 
     </scale> 
    </item> 
    <item android:id="@android:id/progress" 
      android:gravity="center_vertical|fill_horizontal"> 
     <scale android:scaleWidth="100%" 
      android:level="1000"> 
      <shape android:shape="rectangle" 
       android:tint="?attr/colorControlActivated" > 
       <size android:height="4dp" /> 
       <solid android:color="@android:color/white_disabled_material" /> 
      </shape> 
     </scale> 
    </item> 
</layer-list> 

은 동적으로 다음 프로그래밍 방식

setLevel를 호출 수준을 변경하려면
관련 문제