2016-03-07 2 views
1

Je dois obtenir la taille du texte de la vue de texte pour pouvoir incrémenter la taille du texte tout en appuyant sur le bouton qui indique que cela aide à augmenter la taille du texte dans la vue de texte. Permettez-moi clairement ce que je l'ai fait jusqu'à présentAffichage du texte renvoyant une taille de texte incorrecte

i ont une vue de texte et en définissant sa taille du texte dans dimen dossier

<TextView 
      android:id="@+id/tv_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="2dp" 
      android:text="@string/flash" 
      android:textSize="@dimen/tv_text_fontsize" 
      android:gravity="fill_horizontal" 
      /> 

pour soutenir mon point de vue du texte Taille du texte à toutes les tailles d'écran en conséquence j'ai fait dimen diférentes le dossier et le réglage de la taille du texte comme suit

<dimen name="tv_text_fontsize">32sp</dimen>

il est donc 32sp pour les grands appareils tels que des comprimés. Mais quand j'obtiens la taille de l'affichage de texte par java cela me renvoie la taille de texte incorrecte. ici voir ci-dessous Ho je reçois la taille du texte

float textSize = tvContentString.getTextSize(); 

mais cela me renvoie la taille du texte erroné de la textview.

S'il vous plaît me suggérer, comment puis-je obtenir la taille exacte du texte affiché dans la vue de texte. Comme je veux incrémenter la taille du texte à la pression du bouton, pour cela j'ai besoin de récupérer la taille réelle du texte, ie si la taille du texte est de 32 Je veux l'incrémenter 32 + 1 = 3sp

Mais quand je récupère le taille du texte c'est quelque chose d'autre comme pour les tablettes je l'ai mis 32sp mais il me récupère 42 donc en incrémentant en 42 + 1 faisant son 43 et quand je le mets sur le bouton pressez son look maladroit.

S'il vous plaît aider !!! Comment puis-je obtenir la taille réelle du texte. ??

+0

voir ce http://stackoverflow.com/a/6999195/4146722 –

Répondre

5

Le problème est que getTextSize() retourner la taille en pixels, pas en sp. Ainsi, vous pouvez convertir les pixels en sp d'abord, puis -

tvContentString.setTextSize(TypedValue.COMPLEX_UNIT_SP, new_size); 

Pour convertir de pixels à une utilisation sp cette -

public static float pixelsToSp(Context context, float px) { 
    float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity; 
    return px/scaledDensity; 
} 

code tiré de here.

+0

thats réponse parfaite, travaillant comme un charme –