我有一个随机背景颜色的文本视图(可以是任何颜色)。我也有一个文本在这个文本视图,需要可读。我认为最好的解决方案是突出显示白色的文本,并设置文本颜色为黑色。
我的问题是:是否可以突出显示XML中texview内部的文本?
我的布局中包含以下内容:
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/colorButton4"
android:layout_gravity="right|bottom"
android:background="@drawable/layout_border"
android:layout_marginRight="30dp"
android:layout_marginBottom ="30dp"
android:clickable="true"
android:onClick="onClick"
android:gravity="center"
android:textColorHighlight="@color/bgWhite"
android:textColor="@color/Black"
android:text="5431354" />
但它没有突出显示文本。
8条答案
按热度按时间ee7vknir1#
您可能希望为此使用SpannableString,它允许字符串的各个部分在TextView中以不同的方式呈现。
就像这样:
mcdcgff02#
轻松的方式
您可以使用Spannable类设置文本格式。
输出将类似于下图。
方法是这样的。
你可以check this answer来点击高亮显示的文本。
qoefvg9y3#
要高亮显示所有出现的特定文本,请使用此方法:
注意:mTextView是一个TextView对象,您希望在其中突出显示文本
imzjd6km4#
我编写了一个Kotlin方法,它将突出显示
String
中出现的所有关键字,并返回SpannableString
。k7fdbhmy5#
https://github.com/datanapps/HighlightedTextView
ej83mcc06#
Suraj's answer很好用,但是缺少两个组件:第一,它不会突出显示第一个单词(如Rany注解所示);第二,它不会忽略大小写,因此在此字符串中搜索
"test"
:"This is a Test"
将找不到任何内容。这是我更新的答案,它通过一个传递的参数解决了这两个问题,如果你想使用自定义颜色来突出显示,还添加了alpha。注意,重载的第一个方法是一个示例,说明了如何返回前一个方法所做的事情,而不是选择的第一个项目。
zdwk9cvp7#
如果您检查了TextView的文档,您会发现
android:textColorHighlight
并没有实现您想要的功能:https://developer.android.com/reference/android/widget/TextView.html#attr_android:textColorHighlight它只在选择文本时使用,例如在EditText中。您需要将TextView的背景设置为“突出显示”。
dtcbnfnu8#
在Android上工作了4年之后,我可以有把握地说,没有XML之外的代码是不可能的。如果你能使用一些代码,其他人分享的解决方案将对你有所帮助,所以请阅读!
编辑:我选择了一个新的答案作为有效的,但它需要编码一个自定义的TextView!