151 votes

Comment définir la taille du texte de textview dynamiquement pour les différentes écrans

Je suis entrain de créer un textview et en ajoutant à la mise en page dynamique. Je suis à l'aide de textView.setText(18) méthode pour définir la taille du texte.Je l'ai testé sur tablette samsung et a constaté que la taille de la police est trop petite pour cet écran, puis j'ai changé le textsize à 25, mais il est trop grand pour sur émulateur(480*800). Mon problème est de définir la taille du texte de façon dynamique afin qu'il s'adapte à tous les écrans.

303voto

MKJParekh Points 18108

EDIT: Et Comme je Recherche sur StackOverflow maintenant, j'ai trouvé Cette Question est Double de : Ce et Ce

Vous avez besoin d'utiliser une autre fonction setTextSize(unit, size) unité SP aime cela,

tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);

Veuillez en lire plus pour TypedValue constantes.

168voto

blessenm Points 14700

Vous devez utiliser la ressource de dossiers tels que

values-ldpi
values-mdpi
values-hdpi

Et écrire la taille du texte dans 'dimensions.xml fichier pour chaque gamme.

Et dans le code java, vous pouvez définir la taille du texte avec

textView.setTextSize(getResources().getDimension(R.dimen.textsize));

Exemple dimensions.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textsize">15sp</dimen>
</resources>

68voto

Justin Mclean Points 990

Il n'y a probablement pas besoin d'utiliser l' ldpi , mdpi ou hdpi qualificatifs dans ce cas.

Lorsque vous définissez une dimension dans un fichier de ressources vous d'inclure l'unité de mesure. Si vous utilisez sp unités qu'ils sont mis à l'échelle en fonction de la densité de l'écran, afin que le texte à 15sp doit apparaître à peu près de la même taille sur les écrans de densité différente.
(La vraie densité de l'écran de l'appareil ne va pas correspondre exactement comme Android généralise densité de l'écran en 120, 160, 240, 320, 480 and 640 dpi groupes).

Lors de l'appel d' getResources().getDimension(R.dimen.textsize) il sera de retour de la taille en pixels. Si l'utilisation de la sp, il sera mis à l'échelle par la densité de l'écran,

Appelant setText(float) définit la taille en sp units. C'est là la question est,
j'.e vous avez pixels mesures d'une part, et sp unit sur les autres pour résoudre ce faire:

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
    getResources().getDimension(R.dimen.textsize));

Remarque vous pouvez également utiliser

getResources().getDimensionPixelSize(R.dimen.textSize);

au lieu de getDimension() et il va s'arrondir et le convertir en non valeur fractionnaire.

50voto

NagarjunaReddy Points 3638

Après une longue période a frappé ce et enfin résolu comme ceci

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
              getResources().getDimension(R.dimen.textsize));

créer dimen le dossier comme ceci res/values/dimensions.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

  <dimen name="textsize">8sp</dimen>

 </resources>

-2voto

Om Narain Shukla Points 164

Je pense que Vous devriez utiliser le textView.setTextSize(float taille) méthode pour définir la taille du texte. textView.setText(arg) utilisé pour définir le texte dans l'Affichage de Texte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X