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.
Réponses
Trop de publicités?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.
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>
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.
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>