Android Charsequence-替换文本

Android Charsequence-替换文本,android,html,charsequence,Android,Html,Charsequence,由于在字符串资源中使用HTML,我无法将其从charsequence转换为字符串(否则我将丢失格式) xy/string> 使用getString()后,我想用“其他东西”替换“y”,但您是如何做到的?这似乎是一个简单的问题,但出于某种原因,我找不到关于它的任何东西 编辑:现在我考虑一下,我可以将charsequence转换为包含HTML代码的字符串,然后再将其转换回charsequence吗 编辑:忘记提到字符串被设置为按钮标题,然后被检索(然后在那里使用)。有。创建一个函数,在该函数中,作

由于在字符串资源中使用HTML,我无法将其从charsequence转换为字符串(否则我将丢失格式)

xy/string>
使用
getString()
后,我想用“其他东西”替换“y”,但您是如何做到的?这似乎是一个简单的问题,但出于某种原因,我找不到关于它的任何东西

编辑:现在我考虑一下,我可以将charsequence转换为包含HTML代码的字符串,然后再将其转换回charsequence吗


编辑:忘记提到字符串被设置为按钮标题,然后被检索(然后在那里使用)。

有。创建一个函数,在该函数中,作为参数,获取需要格式化的字符串。在函数中,您只需通过Iterator,然后是Html.fromHtml()

。创建一个函数,在该函数中,作为参数,获取需要格式化的字符串。在函数中,您只需通过Iterator,然后使用Html.fromHtml()

将问题分解为多个步骤:

  • 用“其他东西”替换y可以这样做:

    String.format("%1$", "otherStuff");
    
    <string name="string_name">%1$ : %2$</string>
    
    ---
    
    getString(R.string.string_name, new String[]{"hello", "world"});
    
  • 如果使用getString(),则可以执行以下操作:

    <string name="exponent_key">%1$</string>
    
    ---
    
    String string = getString(R.string.exponent_key, "otherStuff");
    
  • 注意:如果需要在文本视图中显示HTML,只需使用HTML.fromHtml:

    textView.setText(Html.fromHtml(getString(R.string.exponent_key, "otherStuff")));
    

让我们将您的问题分为多个步骤:

  • 用“其他东西”替换y可以这样做:

    String.format("%1$", "otherStuff");
    
    <string name="string_name">%1$ : %2$</string>
    
    ---
    
    getString(R.string.string_name, new String[]{"hello", "world"});
    
  • 如果使用getString(),则可以执行以下操作:

    <string name="exponent_key">%1$</string>
    
    ---
    
    String string = getString(R.string.exponent_key, "otherStuff");
    
  • 注意:如果需要在文本视图中显示HTML,只需使用HTML.fromHtml:

    textView.setText(Html.fromHtml(getString(R.string.exponent_key, "otherStuff")));
    
    • 在您的string.xml中

      <string name="exponent_key">x<sup><small>%1$d</small></sup></string>
      
      在string.xml中

      <string name="exponent_key">x<sup><small>%1$d</small></sup></string>
      

      考虑一下你想要达到的效果。 你可以这样做

       SpannableString ss = new SpannableString("2");
              // set superscript
              ss.setSpan(new SuperscriptSpan(),0,ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
              // set font size
              ss.setSpan(new AbsoluteSizeSpan(12,true),0,ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
              tv.append(ss);
      

      考虑一下你想要达到的效果。 你可以这样做

       SpannableString ss = new SpannableString("2");
              // set superscript
              ss.setSpan(new SuperscriptSpan(),0,ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
              // set font size
              ss.setSpan(new AbsoluteSizeSpan(12,true),0,ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
              tv.append(ss);
      

      首先,xy第二,尝试在程序中使用它,将其定义为字符串,然后逐字符遍历整个字符串,当您到达“y”字符时,获取该位置,然后使用您想要的任何内容更改该位置的字符,这是一个输入错误。问题是如果我将其定义为字符串,格式就会消失。试试这个。我想那会有用的。现在有没有比搜索所有按钮(包含cdata)并在每个按钮上运行Html.fromHtml()更好的方法?编辑:事实上,等等。我的一些代码直接从按钮标题中读取字符串,以确定要执行的操作。如果我将其转换为html,检索文本将再次破坏格式?首先,xy第二,尝试在程序中使用它,将其定义为字符串,然后逐字符遍历整个字符串,当到达“y”字符时,获取位置,然后用你想要的任何东西来改变这个位置的字符,这是文章中的一个输入错误。问题是如果我将其定义为字符串,格式就会消失。试试这个。我想那会有用的。现在有没有比搜索所有按钮(包含cdata)并在每个按钮上运行Html.fromHtml()更好的方法?编辑:事实上,等等。我的一些代码直接从按钮标题中读取字符串,以确定要执行的操作。如果我将其转换为html,检索文本将再次破坏格式设置。
      %2$
      是什么意思?CDATA位不应该在像
      y]>
      这样的标签中吗?你能解释一下带两个参数的format和getString的作用吗?是的,关于CDATA(在我的帖子中修复了),关于%2$etc,你是对的,我已经在帖子中添加了它,但是%1$甚至意味着什么?它是一个占位符。。因此Java知道第一个元素位于该位置。这就像呼叫:“嗨%1$”。替换(“%1$”,“主”);这并不意味着什么特别的事情。数字是递增的,因此您知道哪个元素替换为哪个占位符。好的,那么我在字符串资源中从不使用字母“y”?我使用字符串资源作为按钮标题…与
      %2$
      有什么关系?CDATA位不应该在像
      y]>
      这样的标签中吗?你能解释一下带两个参数的format和getString的作用吗?是的,关于CDATA(在我的帖子中修复了),关于%2$etc,你是对的,我已经在帖子中添加了它,但是%1$甚至意味着什么?它是一个占位符。。因此Java知道第一个元素位于该位置。这就像呼叫:“嗨%1$”。替换(“%1$”,“主”);这并不意味着什么特别的事情。数字是递增的,因此您知道哪个元素替换为哪个占位符。好的,那么我在字符串资源中从不使用字母“y”?我使用字符串资源作为按钮标题。。。