1

J'ai une chaîne dans le fichier strings.xml. clique sur une partie de cette chaîne redirige vers une tâche. cette partie est faite en fonction de l'index de la chaîne.Chaîne localisée du handle contient un lien dans un seul TextView

Maintenant, j'essaie de le traduire en français mais je reçois l'index hors de l'exception liée à moins de la longueur des chaînes anglaises.

Quelqu'un pourrait-il dire, quelle serait la meilleure façon de gérer ce scénario?

La séparation de cordes est une chose que nous pouvons faire. Mais je veux le manipuler dans une vue de texte elle-même.

Code pour les Anglais chaîne:

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()); 
+0

Vous avez besoin d'une séparation de chaînes, mais seulement pour trouver la méthode 'int start' pour' setSpan() '. –

Répondre

3

Ensuite, vous devrez détecter la langue que le dispositif utilise si elle utilise les chaînes françaises ou les chaînes en anglais puis, mettre ceci dans chaque condition définissant la longueur pour le fichier de chaînes donné. par exemple. Il suffit de modifier la longueur de début et de fin en fonction de la chaîne contenue dans le fichier de chaînes.

+0

Pouvons-nous faire sans langage spécifique @Bryan – Vji

+0

Je pense donc, vous devrez obtenir la taille de la chaîne de ressources et calculer la longueur de début et de fin par programmation. – Bryan