sky*_*ign 28 android android-widget
我正在努力使用EditText和Spannable文本对象,这些天,我已经阅读了大约十次的API文档,即使我不确定我是否理解正确.所以我正在寻找一个向我展示如何利用EditText和Spannable的例子.
and*_*ndy 32
由于您没有指定从API无法掌握的内容,因此很难回答您的问题(简答:将问题重写为特定问题而非一般问题).
一个典型的Spannable-example就是这样将EditText中的选定文本转换为Italic:
Spannable str = mBodyText.getText();
if(mBodyText.getSelectionEnd() > mBodyText.getSelectionStart())
str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC),
mBodyText.getSelectionStart(), mBodyText.getSelectionEnd(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
else
str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC),
mBodyText.getSelectionEnd(),
mBodyText.getSelectionStart(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
这是从其他东西剪切和粘贴的,所以你的直接可能性可能会受到影响,但它至少会显示一个Spannable(在这种情况下为a StyleSpan)的工作示例.在API中,您可以找到其他类型的Spans(特别是ImageSpan,这是新转换的droiders中的常见问题).
小智 10
我刚刚开始尝试解决它,它似乎不必要的棘手.
这是一种将新的spannable文本添加到现有视图的工作方法.我想在视图中添加彩色文本,这似乎是唯一的方法.
虽然感觉就像一个丑陋的黑客,你可以创建一个虚拟TextView(未显示在任何地方)并在那里设置文本样式,然后将样式文本附加到你想要的任何地方.感谢它来自anddev.org的iifuzz.我的代码看起来像这样:
spanbuffer = new TextView(context);
spanbuffer.setText(newText, TextView.BufferType.SPANNABLE);
Spannable s = (Spannable) spanbuffer.getText();
s.setSpan(new ForegroundColorSpan(Color.RED), 0, newText.length() - 1, 0);
this.append(s);
Run Code Online (Sandbox Code Playgroud)
我认为您应该能够使用SpannableFactory创建新的spannable文本,如下所示:
Spannable s = Spannable.Factory.getInstance().newSpannable(newText);
Run Code Online (Sandbox Code Playgroud)
但是我无法让这个文字显示出新的跨度效果,所以我放弃了.
| 归档时间: |
|
| 查看次数: |
43189 次 |
| 最近记录: |