web-dev-qa-db-fra.com

Est-il possible de définir la couleur d'une chaîne directement dans string.xml?

Je veux dire quelque chose comme:

<string name="error" color="#9a1d1d">Error!</string>
13
Gimmy88

Comme suggéré par rekire, il est impossible de définir les couleurs de la manière que vous utilisez.

Vous pouvez utiliser la méthode suggérée par rekire.

En vous xml, vous pouvez spécifier la couleur de votre textview comme

  Android:textColor="#0EFFFF"

Vous pouvez également définir la couleur du texte par programme

  TextView tv= (TextView)findviewById(R.id.textView1);
  tv.setTextColor(Color.RED);  

Pour définir la couleur de mots particuliers dans TextView, vous pouvez utiliser une chaîne pouvant être spannée.

    TextView tv= (TextView)findviewById(R.id.textView1);
    tv.setText("");  
    String s="Hello World";
    SpannableString ss=  new SpannableString(s);                
    ss.setSpan(new ForegroundColorSpan(Color.GREEN), 0, 5, 0);  
    tv.setText(ss);
15
Raghunandan

Avant 4.x, vous pourriez faire ceci:

<string name="error"><font fgcolor="#ff9a1d1d">Error!</font></string>

Cependant, bug https://code.google.com/p/Android/issues/detail?id=58192 a interrompu cette fonctionnalité car il introduisait un analyseur syntaxique d'entiers ne pouvant pas gérer les nombres avec le bit le plus élevé défini Malheureusement, vous ne pouvez pas omettre la partie opacité de la couleur (ce que la plupart des gens préfèrent régler sur ff comme dans cet exemple.)

Hier encore, j'ai appris une solution de rechange intelligente. Ce que vous faites est d’annuler la valeur de couleur hexadécimale en complément à deux. Cela dépend de votre calculatrice hexadécimale, mais le moyen le plus simple consiste à soustraire votre couleur de 0x100000000. Dans votre cas, cela entraînerait 0x100000000 - 0xff9a1d1d = 0x65e2e3. (Ou vous pouvez simplement l’inverser, par exemple 0065e2e2, ce qui serait assez proche). Vous annulez ensuite ceci avec un signe moins:

<string name="error"><font fgcolor="-#65e2e3">Error!</font></string>

et voila! vous avez votre couleur désirée.

Félicitations à TWiStErRob pour avoir découvert cela dans https://stackoverflow.com/a/11577658/338479

ETA: Je viens de découvrir que cela plantera votre application si vous le faites sur un système 2.x. il lève une exception NumberFormat

10
Edward Falk

Placez ce code dans le fichier string.xml:

<font color="Red"><a href="[email protected]">HERE</a></font>
6
135

Non, ce n'est pas possible, vous devez le spécifier dans votre mise en page. Mais vous pouvez mettre la couleur dans votre fichier colors.xml.

couleurs.xml

<color name="foo">#abc123</color>

your_layout.xml

<TextView Android:textColor="@color/foo" Android:text="@string/error" />
5
rekire

C'est possible d'essayer ça ..

string.xml

<string name="colorText"><![CDATA[ Give your string here. Like, This sentence has a<b><font color=#FF0000>Red color</b> text.]]></string>

ExampleClass.Java

TextView colorTextView = (TextView)findViewById(R.id.colorText);
String customColorText = getResources().getString(R.string.colorText)
colorTextView.setText(Html.fromHtml(customColorText));

Joyeux codage ....

5

Essaye celui-là

<string name="some_text">Font color is <font fgcolor="#ffff0000">red</font></string>
5
ihsanhf
  1. Créer une couleur dans le fichier colors.xml avec des valeurs

      <color name ="red">#ff0000</color>
    
  2. Dans votre strings.xml, faites quelque chose comme

      <string name="some_text">The next Word is <font fgcolor="red">red</font> but that is all</string>
    

J'ai trouvé que je ne pouvais pas utiliser le code hexadécimal directement dans strings.xml 

3
user2380177

Strings.xml

<string name="pbs_setup_title">Select %1$s <font fgcolor="#FF33B5E5">brand</font> or scan the <font fgcolor="#FFFF0000">Remote</font></string>

classe.Java

String SelectedDeviceType_Str = "TV"

SetupYourDevice_TextView.setText(Html.fromHtml(String.format(Html.toHtml(new SpannedString(getResources().getText(R.string.pbs_setup_title))),
                    SelectedDeviceType_Str)));
3
Shruthi

D'après mon expérience, j'ai enregistré la couleur dans strings.xml 

<color name="name_color">#ffffff</color>

Quand j'ai une vue et mis `

nameView.setBackgroundColor (R.color.name_color);

c'est bon.

Mais quand je mets la couleur pour que le texte ressemble à 

name_TextView.setTextColor (R.color.name_color);

ce n'est pas Effet

Si vous rencontrez le même problème, il suffit de définir 

name_TextView.setTextColor (Color.parseColor ("le code hexa de la couleur que vous voulez"));

J'espère que ça vous aidera.

3
sonngaytho

J'espère que cette aide pour vous.

   TextView textView=findViewById(R.id.text);

   String error= getResources().getString(R.string.error);
   ForegroundColorSpan fgColor=new ForegroundColorSpan(Color.RED);  // here set the color of Text

   SpannableString ss=new SpannableString(error);  //here set the text to spannableString

   ss.setSpan(fgColor,0,error.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //here which color , when to where you will set the color
   textView.setText(ss);

Qu'est-ce que SpannableString dans Android?

Exemple Android SpannableString. SpannableString dans Android est un excellent moyen de styler les chaînes dans un TextView. En termes simples, cela permet à un TextView de fournir différents styles pour différentes zones de texte.

1
D Prince

Dans Strings.xml:

<resources>
        <color name="etDisabled">#ac8888</color>
        <color name="myorange">#f56415</color>
        <color name="mygreen">#95cd08</color>
  </resources>

Puis dans le code:

 TextView myText = (TextView) findViewById(R.id.tvJugador1);
  myText.setTextColor(R.color.mygreen);
0
kike0kike

Vous pouvez changer la couleur du texte avec string.xml:

<string name="completed_running_not_alloted"><font fgcolor="#6DC287">Completed /</font><font fgcolor="#FFCC29"> Running /</font> Not Alloted</string>

Si vous souhaitez définir du texte par programme, vous pouvez l'utiliser, il le fera restituer la couleur de votre texte dynamiquement.

 private SpannableStringBuilder setSpan(int completed, int running){
            SpannableStringBuilder span1 = new SpannableStringBuilder(completed+" / ");
            ForegroundColorSpan color1=new ForegroundColorSpan(Color.parseColor("#6DC287"));
            span1.setSpan(color1, 0, span1.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);

            SpannableStringBuilder span2 = new SpannableStringBuilder(running+"");
            ForegroundColorSpan color2=new ForegroundColorSpan(Color.parseColor("#FFCC29"));
            span2.setSpan(color2, 0, span2.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);

            Spanned concatenated=(Spanned) TextUtils.concat(span1, span2);

            return new SpannableStringBuilder(concatenated);
        }
0
JoboFive