在TextView中更改样式:你可以调用getText然后调用setSpan吗?

时间:2011-05-19 20:26:53

标签: android textview

你可以在TextView上调用getText(),然后在结果对象上调用setSpan()吗?我知道它有效(至少在我在2.2和2.3中尝试过的手机上),但getText()的文档清楚地表明你不能修改getText()的结果。

setSpan肯定看起来像是一个修改,但仔细阅读文档之后我不太确定:

setSpan(Object what, int start, int end, int flags)
Attach the specified markup object to the range start…end of the text, or move the object     to that range if it was already attached elsewhere.

我可以读到这一点,说唯一的变化是标记对象(在这种情况下,你没有违反没有modn的文档条件)。

这是一个糟糕的黑客,会在下一个版本中像树枝一样破碎吗?或者调用setSpan()以某种方式免除getText()的“不要更改此”文档?

(另一个更新:常见问题解答明确表示要执行此操作:http://developer.android.com/resources/faq/commontasks.html,所以我认为这只会误导doc。)

1 个答案:

答案 0 :(得分:0)

TextView.getText()返回CharSequence,而不是Spannable,因此您无法假设结果为Spannable。即使它是Spannable,更改跨度也不会影响TextView的直观表示。当然,不应该做出这样的假设,因为Android是开源系统,每个制造商都可以以某种方式对其进行修改。所以你不应该依赖实现细节。