1

Je veux ajouter plusieurs span à une vue de texte avec un espace de ligne configurable. J'utilise la classe LineHeightSpan définie dans android. Mais il semble se comporter différemment dans Android M et versions inférieures Voici le résultat dans la version inférieure d'AndroidLineHeightSpan dans Android M et versions inférieures

enter image description here

et voici comment il ressemble dans Android M enter image description here

Voici comment je mis en œuvre dans le code: Ceci est ma mise en œuvre de LineHeightSpan:

public class VerticalMarginSpan implements LineHeightSpan { 

    private final int value; 

    public VerticalMarginSpan(int value) { 
     this.value = value; 
    } 

    @Override 
    public void chooseHeight(CharSequence text, int start, int end, int spanstartv, int v, 
         Paint.FontMetricsInt fm) { 
     fm.ascent -= value/2; 
     fm.descent += (value/2); 
    } 
} 

Et comment je l'utilise:

SpannableStringBuilder builder = new SpannableStringBuilder(tempStr); 
    builder.setSpan(
      new VerticalMarginSpan(lineSpace), 
      0, 
      tempStr.length(), 
      Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
    txt.setText(builder); 

Comment puis-je résoudre le problème?

Répondre

3

Si vous avez Marshmallow v6.0 je crains que vous ne pouvez rien faire dans ce cas, car il est signalé Here. Soit vous devez mettre à jour votre appareil à v6.0.1 comme il a été corrigé dans cette version ou supprimer conditionnellement votre logique de Marshmallow 6.0

EDIT: pour plus référence check this.

+1

-je résoudre ce problème dans M Android en ajoutant la police l'espacement à textview au lieu d'appliquer LineHeightSpan. Tu as sauvé mon temps. Je vous remercie. – Hojjat