我在 strings.xml 文件中有一个字符串。单击此字符串的某些部分重定向到任务。某些部分是根据字符串的索引制作的。
现在我正在尝试将它翻译成法语,但我得到了索引超出范围的异常,因为它的长度小于英文字符串的长度。
谁能说一下,处理这种情况的最佳方法是什么?
字符串分离是我们可以做的一件事。
但我想在一个 TextView 中处理它。
英文字符串代码:
SpannableString spannableString = new SpannableString(getResources().getString(R.string.desc));
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Log.v("dosomething", "dosomething");
}
@Override
public void updateDrawState(TextPaint ds) {
Log.v("task one", "task one");
}
};
spannableString.setSpan(clickableSpan, 87, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mDesc.setText(spannableString);
mDesc.setMovementMethod(LinkMovementMethod.getInstance());
最佳答案
然后您必须检测设备使用的语言是法语字符串还是英语字符串,然后将其放入定义给定字符串文件长度的每个条件中。 例如
if (Locale.getDefault().getLanguage().equals("en")) {
spannableString.setSpan(clickableSpan, 87, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
else if (Locale.getDefault().getLanguage().equals("fr")) {
spannableString.setSpan(clickableSpan, 50, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
只需根据字符串文件中的字符串更改开始和结束长度即可。
关于java - 处理本地化的字符串包含单个 TextView 中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45504255/