2011-01-12 28 views

回答

18

最简单的解决办法可能是创建一个自定义UnderLineTextView组件从TextView的派生,重载的setText(),并设置整个文本强调,这样的事情(从你提到的链接中加下划线代码):

@Override 
public void setText(CharSequence text, BufferType type) { 
    // code to check text for null omitted 
    SpannableString content = new SpannableString(text); 
    content.setSpan(new UnderlineSpan(), 0, text.length(), 0); 
    super.setText(content, BufferType.SPANNABLE); 

} 

然后它只是一个ma在布局中使用新组件并像往常一样设置文本。其余部分将自动处理。

更多关于自定义组件的信息: http://developer.android.com/guide/topics/ui/custom-components.html

14

可以下划线的文本在Html.fromHtml(String source)

例子:

textView.setText(Html.fromHtml("this is <u>underlined</u> text")); 
+0

最简单的解决方案恕我直言。 – gnac 2011-08-31 06:56:19

+0

这不会起作用,因为'`和``标签的开启括号不会被转义。有关正确的示例,请参阅http://stackoverflow.com/a/9955051/425183 – Ognyan 2012-03-31 10:25:00

+0

确实是最简单的解决方案,txs – Hubert 2012-06-08 08:15:11

1

您可以通过/res/values/string.xml文件,如果你喜欢也做到这一点:例如,在/res/values/string.xml你可以添加类似的条目:

<string name="createAccount"><u>Create Account</u></string> 

,然后在活动的onCreate(捆绑savedInstanceState)方法,你能添加以下代码,以使“创建帐户”>出现在你的设置的UI下划线您在/ res/layout /的xml文件中为您的活动定义的createAccountText TextView:

TextView createAccountText = (TextView) findViewById(R.id.createAccountText); 
Resources res = getResources(); 
CharSequence styledText = res.getText(R.string.createAccount); 
createAccountText.setText(styledText, TextView.BufferType.SPANNABLE); 

丹尼·雷明顿 - MacroSolve

0
SpannableString content = new SpannableString(name); 
content.setSpan(new UnderlineSpan(), 0, name.length(), 0); 
geometrical_textview.setText(content, TextView.BufferType.SPANNABLE);