在我的textview圣诞老人中,如何在某些单词中使用下划线?

时间:2019-06-27 03:59:16

标签: android

我尝试练习。
在我的应用中,我会有一个问题。学生会选择正确的答案。
当学生选择此答案时。
我希望它会显示在textview上并带有下划线。 我知道使用它会带有下划线。

jp.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);

但是它会强调孔的圣诞老人。...
我只是想用一句话来做。
例如: 小说 非常好。(小说必须下划线)
我只想强调“新颖”
我该怎么办?

这是我的代码:

public class Santance extends AppCompatActivity {
Button bt1;
TextView jp;
String str1="This",str2="is good";
String myans="";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.santance);
    bt1=(Button)findViewById(R.id.bt1);
    jp=(TextView)findViewById(R.id.jp);
    bt1.setOnClickListener(bt_1);

}
private Button.OnClickListener bt_1=new Button.OnClickListener(){
    @Override
    public void onClick(View v) {
       myans="novel";
      jp.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
            jp.setText(str1+"("+myans+")"+str2);

    }
};

private void mytoast(String str)
{
    Toast toast=Toast.makeText(this, str, Toast.LENGTH_LONG);
    toast.setGravity(Gravity.CENTER, 0, 0);
    toast.show();
}

}

谢谢。

   SpannableString content = new SpannableString(myans); 
            content.setSpan(new UnderlineSpan(), 0, myans.length(), 0);
   jp.setText(str1+"("+content+")"+str2);

我使用jp.setText(content)会成功。
但是当我添加其他字符串时,下划线会消失。(但我需要添加其他字符串。...
为什么?

2 个答案:

答案 0 :(得分:2)

如果您要使用资源文件夹中的字符串,请像这样设置,

<resources>
    <string name="any_string_key">
        My name is <u>Dhaval</u>.
    </string>
</resources>

并按如下所示将其加载到textview中,

textView.setText(Html.fromHtml(getString(R.id.any_string_key)));

如果您要动态加载字符串,请使用以下代码。

TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content"); // Here set the text you want to make underline.
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);

更新:

要合并多个跨度,

SpannableString myStr1 = new SpannableString(str1);
SpannableString myStr2 = new SpannableString(str2);
SpannableString underlineContent = new SpannableString("Content");
underlineContent.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(TextUtils.concat(myStr1, " (", underlineContent, ") ", myStr2));

答案 1 :(得分:0)

请尝试其他方法。那就是Html.fromhtml()

textView.setText(Html.fromHtml("This <u>novel</u> is very good"));

HTML将在其打开和关闭标记之间的任何单词下划线。