El documentation officielle ne semble pas répondre à cette question, ou je n'arrive pas à la comprendre.
(sans parler de l'élément AlertDialog
(cela se produit également sur n'importe quel TextView) :
TextView tv = (TextView) dialog.findViewById(android.R.id.message);
Incohérence. Cas A :
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
// or tv.setTextSize(14); does the same
Cas B :
tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.
où values/dimens.xml
l'a :
<dimen name="text_size_small">14sp</dimen>
Résultat : la taille de la police n'est pas la même, et apparaît beaucoup plus grande lors de la récupération à partir de la ressource. J'ai probablement raté quelque chose, alors quelle est mon erreur, et le plus important : pourquoi ?
-- MISE À JOUR DE LA PREMIÈRE RÉPONSE --
Le nombre fixe n'était qu'un exemple, car personne ne coderait en dur des tailles de police fixes dans le code. Permettez-moi donc de reformuler la question :
Pourquoi, si j'obtiens la ressource à partir du code, la taille du texte est plus grande que lorsque j'obtiens la ressource à partir d'une mise en page XML ? Par ailleurs, la question est toujours la même : comment puis-je récupérer une unité 14sp dans le code et la garder cohérente avec l'unité 14sp qui est définie dans le layout XML ? Je n'ai pas accepté la réponse car elle ne me dit pas comment utiliser les unités sp de la ressource dans le code pour la taille du texte.
Sur cette mise en page, la taille de la police est différente, même si la dimension est la même :
<TextView
android:id="@+id/my_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextBody" />
styles.xml :
<style name="TextBody">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:lineSpacingMultiplier">1.1</item>
<item name="android:textColor">@color/body_text_1</item>
<item name="android:textIsSelectable">true</item>
<item name="android:linksClickable">true</item>
</style>
Vous voyez text_size_small là ? Pourquoi dans ce cas la taille de la police est plus petite que dans le code, en utilisant le même dimen
ressource ?