gpt4 book ai didi

android - 如何为 textiew 的某些文本设置不同的颜色并使该文本可点击?

转载 作者:搜寻专家 更新时间:2023-11-01 09:35:58 24 4
gpt4 key购买 nike

在我的应用程序中,我想使用一个 TextView ,它的文本一半应该是黑色的,而后半部分应该是绿色的,我还希望绿色部分可以点击。我找到了一些显示如何更改颜色或如何使可点击的帖子,但我无法找到两者的组合。我自己实现了这个想法,但是问题是应该可以点击的字符串点击不了。如何解决这个问题?任何帮助将不胜感激。这是我的代码

String firststring="Hello i am a textiew";
lString secondstring="ClickMe";
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString firstStringSpannable = new SpannableString(firststring);
firstStringSpannable .setSpan(new ForegroundColorSpan(Color.BLACK), 0, firststring.length(), 0);
builder.append(firstStringSpannable );

String space = " ";
SpannableString spaceSpannable = new SpannableString(space);
builder.append(spaceSpannable);

SpannableString secondSpannable = new SpannableString(secondstring);
secondSpannable .setSpan(new ForegroundColorSpan(Color.GREEN), 0,
builder.append(secondSpannable );

textview.setText(builder, TextView.BufferType.SPANNABLE);
String comepleteString = firststring + " " + secondstring;
SpannableString spannableString = new SpannableString(comepleteString);
int startIndex = comepleteString.indexOf(secondstring);
int endIndex = startIndex + secondstring.length();

Spannable Spannable = (Spannable) textview.getText();
ClickableSpan myClickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
//performing some function
}
};
Spannable.setSpan(myClickableSpan, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

最佳答案

大多数情况下使用setHighlightColor() 方法:

textView.setHighlightColor(ContextCompat.getColor(context, R.color.green));

注意:将 2 个不同字符串的代码更新为 1 个 TextView,第二个字符串将被着色并可点击。

将您的 TextView 的默认颜色设置为黑色的可点击部分将是绿色

有一个简单的例子:

String stringFirst = "..."
String stringSecond = "..."

SpannableString spannable = new SpannableString(stringFirst + stringSecond);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
}

@Override
public void onClick(View widget) {
//Do your click action
}
};
spannable.setSpan(clickableSpan, stringFirst.length()-1, stringFirst.length() + stringSecond.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

textView.setText(spannable);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(ContextCompat.getColor(context, R.color.green));

如果不行,添加下面这行

ds.setColor(ContextCompat.getColor(context, R.color.green));

到您的updateDrawState 方法。它看起来像这样:

String stringFirst = "..."
String stringSecond = "..."

SpannableString spannable = new SpannableString(stringFirst + stringSecond);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(ContextCompat.getColor(context, R.color.green));
}

@Override
public void onClick(View widget) {
//Do your click action
}
};
spannable.setSpan(clickableSpan, stringFirst.length()-1, stringFirst.length() + stringSecond.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

textView.setText(spannable);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(ContextCompat.getColor(context, R.color.green));

关于android - 如何为 textiew 的某些文本设置不同的颜色并使该文本可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43156177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com