I have a project for a RPG on Android but i have a little problem: I'd like to set a specific color for a specific char but Android won't return something like return Html.fromHtml("</font><font color = #00FF00>" + a +"</font><font color = #FFFFFF>");
How can I do that? Here's my code : (the function called in main is affPlate() )
public class TableauClass {
Random rand = new Random(); // rand sert à générer des nombres aléatoires
int h ; // hauteur du plateau de jeu
int l ; // largeur du plateau de jeu
char casePlateau [][]; // tableau à double entrée d'entiers représentant le plateau
public void initTableau(){ // remplissage du tableau avec murs et sols
h = rand.nextInt(9-4+1)+4; //hauteur aléatoire entre 4 et 14
l = rand.nextInt(9-4+1)+4; // largeur aleéatoire entre 4 et 27
casePlateau = new char [h][l]; // création du tableau de char de hauteur h et de largeur l
for (int i = 0; i < h; i++){ // on commence par remplir tout le tableau avec du sol ('s')
for (int j = 0; j < l; j++){
casePlateau [i][j] = ' ';
}
}
for (int i = 0; i < h; i++){ // on met des murs à droite et à gauche
casePlateau [i][0] = '█';
casePlateau [i][l-1] = '█';
}
for (int i = 0; i < l; i++){// on met des murs en haut et en bas
casePlateau [0][i] = '█';
casePlateau [h-1][i] = '█';
}
casePlateau [h-2][l-2] = '@';
}
public TableauClass(){ // constructeur du plateau
//casePlateau = new char [h][l]; // création du tableau de char de hauteur h et de largeur l
initTableau(); // remplissage du plateau
}
public String affplate(){ // methode d'affichage du tableau
String plateau; // chaine de caractère affichant le plateau
String lh = "╔"; // affectation de la couleur et premier caractère de la ligne du haut
String lm = ""; // ligne du milieu
String li = "╠"; // interligne
String lb = "╚"; //ligne du bas
for (int i = 0; i < l-1; i++){
lh = lh + "═══╦"; // on rajoute une case à la ligne du haut autant de fois que la longueur-1 du plateau
li = li + "═══╬"; // on rajoute une case à la ligne du milieu autant de fois que la longueur-1 du plateau
lb = lb + "═══╩"; // on rajoute une case à la ligne du bas autant de fois que la longueur-1 du plateau
}
lh = lh + "═══╗\n"; // dernière case de la ligne du haut
li = li + "═══╣\n"; // dernière case de la ligne du milieu
lb = lb + "═══╝"; // dernière case de la ligne du bas et fin de la couleur
plateau = lh; // on commence par remplir le plateau avec la ligne du haut
for (int i = 0; i<=h-1; i++){ // pour chaque colonne
lm = "║ "; // la ligne du milieu commence avec un ║
for (int j = 0; j < l; j++){ // pour chaque élément de la colonne
lm = lm + (casePlateau[i][j]) +" ║ "; // on ajoute le caractère de la case concernée entre 2 despaces puis un ║
// pour cela on utilise la fonction couleurChar qui gère le changement de couleur en fonction de la case
}
lm = lm + "\n"; // on rajoute un retour à la ligne
if (i != h-1){ // on rajoute la ligne obtenue au plateau et une ligne intermédiaire sauf pour la dernière ligne
plateau = plateau+lm+li;
}
}
plateau = plateau+lm+lb; // on rajoute la dernière ligne
return plateau; // on retourne la chaine de caractère définissant le plateau
}
}
So this is not working well as the characters I want to color are char and not String.
You can achieve it using concept of SpannableString and ForegroundColorSpan
Use can use following snippet: ( Index you will have to calculate )
TextView textView = (TextView)findViewById(R.id.text);
Spannable spannableString = new SpannableString("Sample String");
spannableString.setSpan(new ForegroundColorSpan(Color.RED),5,6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.