2010-10-16 12 views
1

J'essaie de changer la couleur d'une barre de progression horizontale (premier plan). Je suis tombé sur this example et j'essaie de modéliser mon fichier XML. Cependant, je reçois une erreur de compilation à la déclaration suivante:Modification de la couleur de la barre de progression à l'aide de XML dans l'application Android

myProgressBar.setProgressDrawable(R.drawable.progress_horizontal); 

L'erreur est « La méthode setProgressDrawable (Drawable) dans le type ProgressBar est pas applicable pour les arguments (int). »

Je crois que la raison est à l'intérieur du fichier R.java je vois la ligne suivante:

public static final int progress_horizontal=0x7f02002f; 

Alors, dois-je définir ce fichier XML en tant que étirables et non un entier, ou est-il une autre façon de résoudre ceci?

Merci.

Edit: Y compris fichier XML

<item android:id="@android:id/background"> 
    <shape> 
     <corners android:radius="5dip" /> 
     <gradient 
       android:startColor="#ff9d9e9d" 
       android:centerColor="#ff5a5d5a" 
       android:centerY="0.75" 
       android:endColor="#ff747674" 
       android:angle="270" 
     /> 
    </shape> 
</item> 

<item android:id="@android:id/secondaryProgress"> 
    <clip> 
     <shape> 
      <corners android:radius="5dip" /> 
      <gradient 
        android:startColor="#80ffd300" 
        android:centerColor="#80ffb600" 
        android:centerY="0.75" 
        android:endColor="#a0ffcb00" 
        android:angle="270" 
      /> 
     </shape> 
    </clip> 
</item> 

<item android:id="@android:id/progress"> 
    <clip> 
     <shape> 
      <corners android:radius="5dip" /> 
      <gradient 
        android:startColor="#ffffd300" 
        android:centerColor="#ffffb600" 
        android:centerY="0.75" 
        android:endColor="#ffffcb00" 
        android:angle="270" 
      /> 
     </shape> 
    </clip> 
</item> 

Répondre

1

La classe R est généré par le compilateur Android, tous les champs de la classe interne dans R.java se réfèrent aux ressources res dossier par android:id Attribut xml. La classe Resouce peut récupérer l'objet de ressource en utilisant l'ID de ressource. Ainsi, vous pouvez obtenir l'objet Drawable à travers Resource.getDrawable(int).

+0

Cool, que compilé correctement. Maintenant, je dois juste comprendre comment utiliser le fichier XML correctement. Merci. – user432209

0

Appelez ce sur votre barre de progression élément xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@android:id/background"> //---this is progress background 
    <shape> 
    <corners android:radius="5dip" /> 
     <gradient 
      android:startColor="#E6E6E6" 
      android:centerColor="#E6E6E6" 
      android:centerY="0.75" 
      android:endColor="#E6E6E6" 
      android:angle="270"/> 
    </shape> 
    </item> 
    <item android:id="@android:id/progress"> //----this is progress status 
    <clip> 
    <shape> 
     <gradient 
      android:startColor="#FF0040" 
      android:centerColor="#FFFF00" 
      android:endColor="#00FF00" 
      android:angle="0" />   //-This varies colors linearly 
    </shape> 
    </clip> 
    </item> 
</layer-list>