java - 处理本地化的字符串包含单个 TextView 中的链接

标签 java android android-layout localization textview

我在 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/

相关文章:

android - 调用需要 api 级别 11。当我收到此错误时该怎么办?

java - Spring 数据 : How to save entity when field spit between two classes

java - Facebook android sdk 需要 java 1.7 才能工作吗?

android - 使用 Retrofit/Gson 解析日期时出现 JsonSyntaxException

android - 如何在android中设置屏幕底部的标签?

android - 如何创建像 youtube "small screen and full screen play in android "这样的视频 View

java - angularjs 的 webjars 无法在 Weblogic 中加载 404,它在 Tomcat 中工作

java - 如何在某些 JUnit 测试之前调用设置方法

java - Libgdx-在指针后面画一条线

android - roboGuice 和 butterknife 依赖注入(inject)的区别