我想使TextView完全加下划线,但我不能使用文本资源和<u>
标签,因为它是动态文本。Android:静态下划线TextView中的动态文本
到目前为止,唯一的办法我知道这样做是在运行时。这真的是唯一的方法吗?有没有办法在XML文件中做到这一点?
我想使TextView完全加下划线,但我不能使用文本资源和<u>
标签,因为它是动态文本。Android:静态下划线TextView中的动态文本
到目前为止,唯一的办法我知道这样做是在运行时。这真的是唯一的方法吗?有没有办法在XML文件中做到这一点?
最简单的解决办法可能是创建一个自定义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
可以下划线的文本在Html.fromHtml(String source)
例子:
textView.setText(Html.fromHtml("this is <u>underlined</u> text"));
您可以通过/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
peter3写之前延长TextView的类并重写的setText方法。
由于setText方法被标记为FINAL,因此此解决方案不起作用。
http://developer.android.com/reference/android/widget/TextView.html#setText(java.lang.CharSequence)
不知道,如果代码可能有一些修改工作。
SpannableString content = new SpannableString(name);
content.setSpan(new UnderlineSpan(), 0, name.length(), 0);
geometrical_textview.setText(content, TextView.BufferType.SPANNABLE);
最简单的解决方案恕我直言。 – gnac 2011-08-31 06:56:19
这不会起作用,因为'`和``标签的开启括号不会被转义。有关正确的示例,请参阅http://stackoverflow.com/a/9955051/425183 – Ognyan 2012-03-31 10:25:00
确实是最简单的解决方案,txs – Hubert 2012-06-08 08:15:11