是否可以直接在string.xml中设置字符串的颜色?

时间:2013-04-14 08:34:27

标签: android string colors

我的意思是:

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

13 个答案:

答案 0 :(得分:15)

正如rekire建议的那样,无法按照你的方式设置颜色。

您可以使用rekire建议的方法。

在xml中,您可以将textview的颜色指定为

  android:textColor="#0EFFFF"

您还可以设置文本颜色programaticaly

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

要在textview中设置特定单词的颜色,可以使用spannable string

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

答案 1 :(得分:10)

在4.x之前,你可以这样做:

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

然而,bug https://code.google.com/p/android/issues/detail?id=58192打破了这个功能,因为它引入了一个整数解析器,无法处理具有最高位设置的数字,不幸的是你不能省略颜色的不透明部分(大多数人都会我喜欢在这个例子中设置为ff。)

我昨天刚刚学会了巧妙的解决方法。你所做的是否定二进制补码中的十六进制颜色值。如何执行此操作取决于您的十六进制计算器,但最简单的方法是从0x100000000中减去颜色。在您的情况下,这将导致0x100000000 - 0xff9a1d1d = 0x65e2e3。 (或者你可以将它反转,例如0065e2e2,它足够接近)。然后用减号再次否定这一点:

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

和voilla!你有你想要的颜色。

感谢TWiStErRob在https://stackoverflow.com/a/11577658/338479

中搞清楚这一点

ETA:我刚刚发现如果你在2.x系统上这样做会导致你的应用程序崩溃;它抛出一个NumberFormat异常

答案 2 :(得分:6)

将此代码放在string.xml文件中:

<font color="Red"><a href="support@legacystories.org">HERE</a></font>

答案 3 :(得分:5)

不可能,您必须在布局中指定。但是你可以把颜色放在colors.xml中。

<强> colors.xml

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

<强> your_layout.xml

<TextView android:textColor="@color/foo" android:text="@string/error" />

答案 4 :(得分:5)

试试这个

<string name="some_text">Font color is <font fgcolor="#ffff0000">red</font></string>

答案 5 :(得分:5)

可能试试这个..

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

快乐的编码....

答案 6 :(得分:3)

  1. 在colors.xml文件中使用值

    创建颜色
      <color name ="red">#ff0000</color>
    
  2. 在strings.xml中执行类似

    的操作
      <string name="some_text">The next word is <font fgcolor="red">red</font> but that is all</string>
    
  3. 我发现我无法直接在strings.xml中使用十六进制代码

答案 7 :(得分:3)

的strings.xml

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

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

答案 8 :(得分:3)

根据我的经验,我将strings.xml中的颜色存储为

  

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

当我有一个View并设置`

  

<强> nameView.setBackgroundColor(R.color.name_color);

没关系。

但是当我为文本设置颜色时

  

<强> name_TextView.setTextColor(R.color.name_color);

它不是效果

如果您遇到同样的问题,请设置

  

name_TextView.setTextColor(Color.parseColor(&#34;您想要的颜色代码hexa&#34;));

希望有所帮助。

答案 9 :(得分:1)

我希望对您有帮助。

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

Android中的SpannableString是什么?

Android SpannableString示例。 android中的SpannableString是在TextView中设置字符串样式的绝佳方法。简而言之,它允许TextView为文本的不同区域提供不同的样式。

答案 10 :(得分:0)

在Strings.xml中:

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

然后在代码中:

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

答案 11 :(得分:0)

  

您可以通过string.xml更改文字颜色:

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

如果您想以编程方式设置文本,那么您可以使用它   动态渲染文本颜色。

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

答案 12 :(得分:0)

是否可以直接在string.xml中设置字符串的颜色?

是的,有可能...

不要使用十六进制代码或您在颜色中定义的颜色!在 Android Studio 中使用默认颜色。 RED WHITE BLACK 和自动建议的颜色像这样。如果使用十六进制代码,在 api 19 之前的 api 中文本将不可见

<string name="try"><font color="RED">This is blue color words </font> this default color words</string>

Android Stduio 的其他 HTML 代码

<string name="try2"><b>Bold style words</b> And this not bold ;) </string>
<string name="try3"><u>Underline style words</u> And this not underline </string>
<string name="try4"><i>italic style words</i> And this not underline </string>

来源:https://developer.android.com/guide/topics/resources/string-resource.html#escaping_quotes