gpt4 book ai didi

java - 仅对连接字符串的一部分进行样式设置 (Android)

转载 作者:行者123 更新时间:2023-11-29 03:03:16 26 4
gpt4 key购买 nike

我意识到下面的代码是不正确的,所以我认为它是伪代码。

public void setCommentText1(String text) {
String commentUsername1 = commentUser1.getText().toString();
commentUsername1.setTextColor(Color.parseColor("#bdbdbd"));
commentText1.setText(String.format("%s %s", new Object[]{commentUsername1, text}));
}

为什么我不能做这样的事情?我有一个格式化的字符串,它从我的用户名对象中获取一个字符串,并从我的评论对象中获取一个字符串。我想将用户名设置为特定颜色(最好设置为不可见),但我不能依赖注入(inject) HTML 或 XML,因为我正在从我的服务器中提取字符串。为什么我不能只设置字符串的其中一个组件的颜色?当然,您不能在 String 上设置 TextColor(它是一个 TextView 修饰符),但是有替代方法吗?

在这里查看我的原始帖子,它是相关的但总体上是一个不同的问题:Wrapping comment text beneath a username in an Android app

最终工作解决方案:

下面标记的答案很好,而且一般有效。它也更干净,但对于我的特殊问题,我需要执行以下操作:

public void setCommentUser1(String text) {
commentUser1.setText(text);
}

public void setCommentText1(String text) {
SpannableStringBuilder builder = new SpannableStringBuilder();
String commentUsername1 = commentUser1.getText().toString();
SpannableString commentUsername1Spannable = new SpannableString(commentUsername1);
commentUsername1Spannable.setSpan(new ForegroundColorSpan(Color.RED), 0, commentUsername1Spannable.length(), 0);
builder.append(commentUsername1Spannable);
builder.append(" ");
builder.append(text);
commentText1.setText(builder, TextView.BufferType.SPANNABLE);
}

最佳答案

这是您应该使用 Spannable 的地方。

final SpannableStringBuilder builder = new SpannableStringBuilder(username)
.append(" ")
.append(text)
.setSpan(new ForegroundColorSpan(Color.parseColor("#bdbdbd")),
0 /* startIndex */,
username.length() /* endIndex */,
Spanned.SPAN_INCLUSIVE_INCLUSIVE /* flags */);

commentText1.setText(builder);

关于java - 仅对连接字符串的一部分进行样式设置 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33578004/

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