2014-07-11 4 views
0

J'ai un tableau de chaînes dans strings.xml qui est un tableau de noms de couleurs. Et, j'ai énuméré des couleurs dans colors.xml avec le même nom que l'article de tableau. Maintenant, j'essaie de définir l'arrière-plan de vue en utilisant le nom de la couleur (chaîne) de strings.xml. Comment puis je faire ça?Couleurs et couleurs name

<color name="aliceBlue">#F0F8FF</color> 
    <color name="antiqueWhite">#faebd7</color> 
    <color name="antiqueWhite1">#ffefdb</color> 
    <color name="antiqueWhite2">#eedfcc</color> 
    <color name="antiqueWhite3">#cdc0b0</color> 
    <color name="antiqueWhite4">#8b8378</color> 
    <color name="aquaMarine1">#7fffd4</color> 
    <color name="aquaMarine2">#76eec6</color> 
    <color name="aquaMarine4">#458b74</color> 
    <color name="azure1">#f0ffff</color> 
    <color name="azure2">#e0eeee</color> 
    <color name="azure3">#c1cdcd</color> 
    <color name="azure4">#838b8b</color> 

color.xml

<string-array name="colorNameArray"> 
    <item>AliceBlue</item> 
    <item>AntiqueWhite</item> 
    <item>AntiqueWhite1</item> 
    <item>AntiqueWhite2</item> 
    <item>AntiqueWhite3</item> 
    <item>AntiqueWhite4</item> 
    <item>aquamarine1</item><item> 
    aquamarine2</item> 
    <item>aquamarine4</item> 
    <item>azure1</item> 
    <item>azure2</item> 
    <item>azure3</item> 
    <item>azure4</item> 

strings.xml

gars vous plaît, votre aide est appréciée.

+1

Je pense que vous devez utiliser un commutateur. – JJ86

+0

pourquoi vous utilisez colorNameArray ?? peux-tu expliquer ? – MilapTank

+0

spinner? Choisissez une couleur dans une liste? – committedandroider

Répondre

1

changement

<item>AliceBlue</item> 

à

<item>@color/AliceBlue</item> 

changer tous, vous avez besoin avant @color/ tag

pour plus d'informations voir:

How can I save colors in array.xml and get its back to Color[] array

alors vous pouvez obtenir vos couleurs:

int[] colorArray = getResources().getIntArray(R.array.colorNameArray); 

vous pouvez définir votre couleur.

si vous avez plus d'un élément et vous avez besoin de changer tous vous pouvez utiliser le code suivant:

1- créer un réseau de View

ArrayList<View> views = new ArrayList<View>(); 

2- Ajouter tout afficher que vous voulez tâche de fond à votre liste

views.add(iv); 
    views.add(tv); 

3- dans un changement de déclaration tout en arrière-plan, comme:

for (int i = 0 ; i < views.size() ; i++) 
    { 
     // set background with views.get(i) and colorArray[i] 

    } 
+0

mais le problème est que vous devez accéder à l'ID de la couleur elle-même dans R .java – committedandroider

+0

ya @committedandroider j'ai eu, je vais éditer mon post mais le tableau d'OP a aussi un problème –

+1

solution intelligente mais ne fonctionnera pas pour ses blancs antiques. Les formats supportés sont: #RRGGBB #AARRGGBB 'rouge', 'bleu', 'vert', 'noir', 'blanc', 'gris', 'cyan', 'magenta', 'jaune', 'lightgray', 'darkgray' ',' grey ',' lightgrey ',' darkgrey ',' aqua ',' fuschia ',' lime ',' maroon ',' marine ',' olive ',' violet ',' argent ',' sarcelle ' jeter une exception d'argument illégal si la couleur n'est pas l'une de ces couleurs énumérées – committedandroider

0

obtenir une référence d'objet Java à la vue. Et appelez cette méthode sur la référence setBackgroundColor (getResources(). GetColor (R.color.color_name));

Questions connexes