返回跨越字符串android

时间:2016-05-28 06:30:47

标签: java android

我在Android上有一个RPG项目,但我有一点问题: 我想为特定字符设置特定颜色,但Android不会返回return Html.fromHtml("</font><font color = #00FF00>" + a +"</font><font color = #FFFFFF>");

之类的内容

我该怎么做? 这是我的代码:(在main中调用的函数是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
}

}

所以这个效果不好,因为我想要着色的字符是char而不是String。

1 个答案:

答案 0 :(得分:2)

您可以使用SpannableStringForegroundColorSpan

的概念来实现它

使用可以使用以下代码段:(您必须计算索引)

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);