gpt4 book ai didi

android - getString(int resId, Object... formatArgs) 方法中参数的样式文本

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:12 27 4
gpt4 key购买 nike

我有两个字符串资源:

<string name="give_us_feedback">Give us feedback at %1$s if you want to make the app even better!</string>  
<string name="email">info@mycompany.com</string>

我想将电子邮件部分的样式设置为蓝色并加下划线以指示用户可以单击它(整个 TextView,而不仅仅是电子邮件文本)。我知道使用 SpannableString 为文本着色,但是当我通过 getString(int resId, Object... formatArgs) 组合两个字符串时它似乎不起作用,大概是因为 getString() 将执行强制转换或 .toString () 在被发送的对象上。这是不起作用的:

TextView emailTV = new TextView(this);
SpannableString email = new SpannableString(getString(R.string.email));
email.setSpan(new UnderlineSpan(), 0, email.length() - 1, 0);
email.setSpan(new ForegroundColorSpan(Color.BLUE), 0, email.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
String feedback = getString(R.string.give_us_feedback, email);
emailTV.setText(feedback);

有什么想法吗?

最佳答案

这有点棘手。转换回字符序列 (String feedback = getString(R.string.give_us_feedback, email);) 使 Spannable 消失。尝试这种方式(您想检查字符串中的正确索引)

String emailString = getString(R.string.email);
String feedback = getString(R.string.give_us_feedback, emailString);
SpannableString email = new SpannableString(feedback);
int startIndex = feedBack.indexOf(emailString);
int endIndex = startIndex + emailString.length();
email.setSpan(new UnderlineSpan(), startIndex, endIndex, 0);
email.setSpan(new ForegroundColorSpan(Color.BLUE), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
emailTV.setText(email);

关于android - getString(int resId, Object... formatArgs) 方法中参数的样式文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23674678/

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