Articles of spannable

使用Spannable和LinkMovementMethod选择TextView

到目前为止我所做的是具有普通文本和可点击跨度的textviews的列表视图: 单击我打开URL的范围,单击OnItemClickListener周围的项目查看导致listView OnItemClickListener导航到项目详细信息,这很好: 现在的问题是: 触摸textView使正常文本有点突出显示(完全选择项目时具有相同的颜色), OnTouchListener的OnTouchListener触摸事件触发但不触发OnFocusChangeListener事件,并且项目的View不会获得选择样式。 尝试了listView,item View的FOCUS_BLOCK_DESCENDANTS所有变体,启用或禁用了FOCUS_BLOCK_DESCENDANTS ,结果相同。 幸运的是, OnClickListener事件以这种方式触发,但这太丑了:由于所选文本颜色与项目颜色相同,文本在触摸未释放时不可见,没有其他迹象表明用户要查看项目详细信息除了丑陋的文字消失。 我怀疑发生这种情况是因为Spannable的内容是Spannable ,而不是CliclableSpan-s的部分以这种奇怪的方式运行。 一旦触摸普通文本,我有机会选择项目吗? listView项目布局: 使用文本视图setClickable(false),我能够以触摸文本视图区域时没有任何反应的方式禁用这种奇怪的选择样式,不好但可能对解决方案有用。 还试图为每个项目添加不可聚焦和不可点击的按钮,当它被触摸时,选择完整的项目,当触摸被释放时,项目的点击事件被传递,这正是我对具有Spannable内容的textView所期望的。

SPAN_POINT_MARK和SPAN_MARK_POINT有什么区别?

我一直在阅读我正在研究的项目的Spanned / Spannable类的文档。 我对包含MARK和POINT的跨度的定义和用法感到困惑。 MARK似乎被定义为“附加”到角色的位置,而POINT被定义为“粘合”到角色。 因此,当文本被更改时, MARK将不会移动,并且当文本被更改时, POINT将随着“胶合”的角色移动。 这些定义似乎表明MARK是INCLUSIVE同义词,而POINT是EXCLUSIVE同义词。 但是,情况并非如此,因为SPAN_MARK_MARK和SPAN_POINT_POINT都不是SPAN_MARK_MARK或SPAN_POINT_POINT的同义词。 实际上, SPAN_INCLUSIVE_INCLUSIVE与SPAN_POINT_MARK相同, SPAN_MARK_POINT与SPAN_POINT_MARK相同。 我的问题如下 为什么SPAN_POINT_MARK与SPAN_EXCLUSIVE_EXCLUSIVE同义? 为什么SPAN_MARK_POINT与SPAN_INCLUSIVE_INCLUSIVE同义? 为什么SPAN_INCLUSIVE_INCLUSIVE和SPAN_EXCLUSIVE_EXCLUSIVE分别与SPAN_INCLUSIVE_INCLUSIVE和SPAN_EXCLUSIVE_EXCLUSIVE同义? 在这种用法中, MARK和POINT的真正定义是什么?

如何检索android中选定文本的BackgroundColorSpan

我正在尝试将BackgroundColorSpan设置为我的编辑文本中的选定文本 。 因此,当我选择任何文本并单击按钮时,它会将背景颜色设置为该特定文本,然后我将该注释保存到我的带有.html格式的SD卡中,然后我再次检索该注释以便以相同的格式再次编辑。 我现在面临的问题是当我将BackgroundColorSpan应用于所选文本时,它显示的是我应用的背景颜色的字符串,但是一旦我将该注释保存到我的SD卡并重新打开,它就不会显示该特定字符串的背景颜色它显示我没有背景颜色的正常字符串。 下面是我用来将背景颜色设置为编辑文本选定区域的代码 mSpannable.setSpan(new BackgroundColorSpan(color),startSelection, endSelection, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 以下是将我的笔记保存到SD卡的代码。 Spanned spannedText = edtNoteDescription.getText(); StringBuilder output = new StringBuilder(); AppHtml.withinHtml(output, spannedText); File mFile = new File(Environment.getExternalStorageDirectory() + File.separator + “MyNote/”); } File myFile = new File(mFile, “/” + strNoteTitle + “.html/”); myFile.createNewFile(); FileOutputStream fOut = new FileOutputStream(myFile); OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); myOutWriter.append(output); myOutWriter.close(); fOut.close(); […]

如何将SpannedString转换为Spannable

您好我在textview中设置了一些文本。 TextView tweet = (TextView) vi.findViewById(R.id.text); tweet.setText(Html.fromHtml(sb.toString())); 然后我需要将TextView的文本转换为Spannble 。 所以我这样做: Spannable s = (Spannable) tweet.getText(); 我需要将它转换为Spannable因为我将TextView传递给了一个函数: private void stripUnderlines(TextView textView) { Spannable s = (Spannable) textView.getText(); URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class); for (URLSpan span : spans) { int start = s.getSpanStart(span); int end = s.getSpanEnd(span); s.removeSpan(span); span = new URLSpanNoUnderline(span.getURL()); s.setSpan(span, start, end, 0); […]

编辑文本视图,图像和文本环绕图像

我正在构建一个富文本编辑器。 我已经实现了像粗体斜体等文本格式以及像blockQuote这样的段落格式。 现在我想在编辑器中添加图像,文本应该环绕它。 我已经使用SpannableString()和SpannableString()以及SpannableString()实现了所有这些。 我可以使用ImageSpan()将图像添加到一行,但是将其添加到内联中并且只是在那里添加一个字符,我想要的是将其插入段落中,其余文本应该环绕它。 我可以通过以下代码在文本的开头添加图像..但我无法将其对齐到中心和右边。 SpannableString string = new SpannableString(“Text with icon and padding”); string.setSpan(new IconMarginSpan(bitmap, 30), 0, string.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 怎么做 ? 举个例子? 或者要遵循什么程序?

向Spannable添加填充/边距

我正在使用BackgroundColorSpan来自定义TextView各个部分。 这是我的代码: String s = “9.5 Excellent!”; s.setSpan(new BackgroundColorSpan(darkBlue, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); s.setSpan(new BackgroundColorSpan(darkBlue, 3, 14, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 这给了我以下结果: 这就是我想要实现的目标: 正如你所看到的,我正在尝试为“9.5”添加填充以及“优秀!”。 字符串,但到目前为止我一直无法find解决方案。 有没有办法将这个填充/边距添加到这些Spannables?

在TextView / EditText中选择一个单词

如何在android中的TextView / EditText中选择一个单词。 我在TextView / EditText有一些文本,当用户点击一个单词时,我希望选择该单词,然后当我调用getSelectedText()方法时,它应该返回我选择的单词。 任何帮助,将不胜感激。 我的目标是在用户点击TextView / EditText的特定单词时执行某些操作。

如何在不同的单词上单击或点击TextView文本?

如何通过单击带有两个不同单词的文本视图来移动到另一个视图。 这是我正在使用的字符串。 By clicking Sign Up, you are indicating that you have read and agree to the Term of Use and Privacy Policy. 我想用不同颜色和可点击的这两个词(使用条款,隐私政策)。 我知道要为特定单词制作颜色。 我想让它可点击。

将Spannable与String.format()结合使用

假设您有以下字符串: String s = “The cold hand reaches for the %1$s %2$s Ellesse’s”; String old = “old”; String tan = “tan”; String formatted = String.format(s,old,tan); //”The cold hand reaches for the old tan Ellesse’s” 假设您希望以此字符串结束,但也为String.format替换的任何单词设置了特定的Span设置。 例如,我们还想要做以下事情: Spannable spannable = new SpannableString(formatted); spannable.setSpan(new StrikethroughSpan(), oldStart, oldStart+old.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new ForegroundColorSpan(Color.BLUE), tanStart, tanStart+tan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 是否有一种强有力的方式来了解old和tan的起始指数? 请注意,只搜索’old’会在’cold’中返回’old’,因此无效。 我想, %[0-9]$s预先搜索%[0-9]$s […]

带有Spannable的按钮setText不适用于Android 5.0 Lollipop

我有一个简单的Button : 并尝试通过以下方式更改文本属性: SpannableString span = new SpannableString(text); span.setSpan(new AbsoluteSizeSpan(8, true), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); testButton.setText(span); 它适用于Android 4.3,但不适用于5.0。 有趣的是,当我将实现从Button更改为TextView它在5.0上工作正常。 似乎是Lollipop中的Button 。