La modification de la Couleur avec LinearLayout et TextView en Java (Android)
Je suis relativement nouveau développeur Android et j'ai remarqué ce qui semble être une curiosité pour moi, que je suis en espérant que quelqu'un peut expliquer. J'ai LinearLayout ll.
Cette ligne de code ne fonctionne pas pour moi lors de l'exécution:
ll.setBackgroundColor(R.color.white);
Cependant, cette ligne de code fonctionne:
ll.setBackgroundResource(R.color.white);
Je suppose que c'simplement parce que j'ai des blancs définie dans mes ressources. Cependant, j'ai aussi essayé en passant 0xFFFFFF dans setBackgroundColor() et cela ne fonctionne pas non plus.
De même avec mon TextView text cette ligne de code ne fonctionne pas lorsqu'il est exécuté:
text.setTextColor(R.color.white);
Je peux voir mon TextView donc je sais que j'ai initialisé correctement (comme mon LinearLayout qui je peux aussi voir). Donc je suppose que ma question se résume à: Comment puis-je utiliser correctement LinearLayout.setBackgroundColor() et TextView.setTextColor() ?
Merci une tonne à l'avance. J'ai lu dans les docs et essayé de trouver des informations en ligne via une recherche sur google et je n'ai pas trouver quoi que ce soit.
OriginalL'auteur Rob S. | 2011-01-17
Vous devez vous connecter pour publier un commentaire.
R.color.whatever
est un int. Il est généré automatiquement comme une référence à une externe définie (en XML), des ressources. Lorsque vous appelezsetBackgroundColor
avec cet entier, c'est d'essayer d'analyser ce type int valeur comme une Couleur.setBackgroundResource
s'attend à obtenir un entier de la ressource est passé. Il récupère la valeur définie de l'extérieur, puis applique la couleur de cette façon. Comme poursetBackgroundColor
, essayez d'utiliser une pleine valeur hexadécimale de la couleur avec canal alpha inclus, par exemple, 0xFFFFFFFF (où les deux premières valeurs de F sont de la valeur alpha).EDIT: Battu par la Marque! 😛
Heureux de vous aider! Pour répondre à votre commentaire sur la Marque de la solution, la Couleur est juste un Android standard d'importation. Si vous êtes dans Eclipse, appuyez simplement sur Ctrl+Shift+O pour ajouter de l'importation, ou si vous voulez manuellement, c'est
import android.graphics.Color;
OriginalL'auteur kcoppock
Rob,
Le problème est que setBackgroundColor() est à la recherche d'un objet en couleur. Donc, vous devez utiliser quelque chose comme la ligne ci-dessous
ou
alors que setBackgroundResource est à la recherche d'une ressource à utiliser comme arrière-plan, c'est à dire quelque chose dans votre dossier res. Vous pourriez l'utiliser pour définir l'arrière-plan d'un drawable ou quelque chose de cette nature.
OriginalL'auteur Mark G.
Dans mon cas, j'ai eu à utiliser à la fois la Couleur ints et des Couleurs définies dans une ressource. Bien qu'ils étaient tous les deux des entiers, ils devaient être d'un certain format de travailler avec setBackgroundColor(int colorInt) et setBackgroundResource(int resourceIdOfColor).
J'ai utilisé:
pour obtenir le resIds dans le format d'une couleur int, alors je pourrais utiliser setBackgroundColor partout.
Vous pouvez utiliser les annotations pour différencier les deux dans votre propre code:
Android cadre Api doivent être annotées déjà:
OriginalL'auteur ataulm