【问题标题】:(Android) Changing text color in strings.xml(Android) 更改 strings.xml 中的文本颜色
【发布时间】:2015-07-17 16:22:26
【问题描述】:

首先,根据用户的操作,我想从我的 strings.xml 资源文件中检索某个字符串:

String option1 = context.getString(R.string.string_one)
String option2 = context.getString(R.string.string_two)
String option3 = context.getString(R.string.string_three)

然后,我将这些字符串作为String[] options 传递给自定义adapter 以获得ListView 我在哪里设置TextView的文本

    public ChoicesAdapter(Context context, String[] options) {
         super(context, R.layout.choice_option_layout_2,choices);
    }



 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater MyInflater = LayoutInflater.from(getContext());
        View MyView = MyInflater.inflate(R.layout.option_list_layout, parent, false);

        String option = getItem(position);
        TextView textView = (TextView) MyView.findViewById(R.id.textView);

        textView.setText(Html.fromHtml(option));

        return MyView;
    }

我希望我的 strings.xml 文件中的不同字符串具有不同的颜色或不同的格式。例如,这是我的字符串之一:

 <string name ="exit"><![CDATA[<i>exit</i>]]></string>

但是,当这个字符串显示在屏幕上时,它显示为:"&lt;i&gt;exit&lt;/i&gt;"

所以,我猜测我的方法中的某个地方丢失了 string.xml 资源的格式。我怎样才能得到它而不是显示"&lt;i&gt;exit&lt;/i&gt;",而是在屏幕上显示“exit”?

我在想我的问题是我在哪里使用.getString()。这是否以某种方式忽略了我在 .xml 文件中添加的格式?

【问题讨论】:

  • 你的问题有一个很好的格式化代码
  • 这仍然是一个问题吗?如果是,请查看下面的答案,TextView 可以使用 Spannable 进行格式化

标签: java android xml string android-resources


【解决方案1】:

查看http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling - 他们的例子是:

<string name="welcome">Welcome to <b>Android</b>!</string>

它说您可以将&lt;b&gt;text&lt;/b&gt; 用于粗体文本,&lt;i&gt;text&lt;/i&gt; 用于斜体文本,&lt;u&gt;text&lt;/u&gt; 用于带下划线的文本。

其中重要的部分是,“通常,这不起作用,因为String.format(String, Object...)方法会从字符串中删除所有样式信息。解决方法是编写带有转义实体的 HTML 标签,然后在格式化后使用fromHtml(String) 恢复。"

他们说“将您的样式文本资源存储为 HTML 转义字符串”,例如

 <string name="exit">&lt;i>exit&lt;/i></string>

然后使用:

Resources res = getResources();
String text = String.format(res.getString(R.string.exit));
CharSequence styledText = Html.fromHtml(text);

正确获取格式化文本。

【讨论】:

    【解决方案2】:

    您是否只是尝试将您的字符串读入 Spannable?

    // Use a spannable to keep formatting
    Spannable mySpannable = Html.fromHtml(context.getString(R.string.string_one));
    textView.setText(mySpannable);
    

    【讨论】:

      猜你喜欢
      • 2013-11-06
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多