首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Return spanned string android

Return spanned string android
EN

Stack Overflow用户
提问于 2016-05-28 14:30:47
回答 1查看 506关注 0票数 1

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

我该怎么做呢?下面是我的代码:(在main中调用的函数是affPlate() )

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2016-05-28 14:40:05

您可以使用SpannableStringForegroundColorSpan的概念来实现它

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

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37495972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档