突出显示TextView中的文本行,包括所有宽度
我已经查看了一些如何使用Spannable
类在TextView
突出显示某些文本的解决方案。 但它只允许突出显示由字符组成的片段。 如果我想突出显示包含TextView
宽度的文本行,但是此行中的文本不能填充整个视图的宽度,该怎么办?
如果有人在这种情况下有经验,我很乐意接受建议。
更新:
好的,我希望以下图片可以清晰地表达我的目标。
这是我可以使用Spannable
实现的:
这就是我想要的:
我真的希望它很清楚。
可能有一种更简单的方法可以做到这一点,但我相信你需要实现一个实现LineBackgroundSpan的类来做你想要的。 这是一些示例代码:
public class MyActivity extends Activity { private static class MySpan implements LineBackgroundSpan { private final int color; public MySpan(int color) { this.color = color; } @Override public void drawBackground(Canvas c, Paint p, int left, int right, int top, int baseline, int bottom, CharSequence text, int start, int end, int lnum) { final int paintColor = p.getColor(); p.setColor(color); c.drawRect(new Rect(left, top, right, bottom), p); p.setColor(paintColor); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final TextView tv = new TextView(this); setContentView(tv); tv.setText("Lines:\n", BufferType.EDITABLE); appendLine(tv.getEditableText(), "123456 123 12345678\n", Color.BLACK); appendLine(tv.getEditableText(), "123456 123 12345678\n", Color.RED); appendLine(tv.getEditableText(), "123456 123 12345678\n", Color.BLACK); } private void appendLine(Editable text, String string, int color) { final int start = text.length(); text.append(string); final int end = text.length(); text.setSpan(new MySpan(color), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } }
使用StateListDrawable
可以更轻松地完成您尝试做的事情。
使所有TextView
在触摸模式下都可以集中精力。 为textview的背景颜色和文本颜色定义statelistdrawable,并在想要突出显示textview时调用requestFocus()
。
textview的背景的StateListDrawable:
类似地定义文本颜色的选择器列表。
你可以在你的xml布局文件中做android:padding="5dp"
,你可以通过样式xml和Spannable字符串突出显示noramlly希望它会工作欢迎
TextView TV = (TextView)findViewById(R.id.text); TV.setText("Italic, highlighted, bold.", TextView.BufferType.SPANNABLE); Spannable WordtoSpan = (Spannable) TV.getText(); WordtoSpan.setSpan(new BackgroundColorSpan(0xFFFFFF00), 8, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TV.setText(WordtoSpan);
链接1
这可能对你有所帮助
将以下代码保存在drawable文件夹中
并指定textview背景如下
android:background="@drawable/<>"
- 解析UTF-8编码的XML文件
- 使用Joda-Time Library将字符串转换为Google Tasks API中的DateTime格式
- Android – 活动构造函数
- 来自APK的源代码
- 无法使用Cipher类解密文件
- 在CustomListview中使用TTS时出现NullPointerException
- 在edittext android中插入imageview
- NetBeans清理和构建Android错误:Java.Lang X500Principal访问
- java.lang.IllegalArgumentException:可能无法回收废弃或附加的视图。 isScrap:false isAttached:true