2010-11-23 27 views
2

Je ne dirais pas que mon application est très lourde ... mais elle affiche parfois des chaînes aléatoires plus longues que d'autres. Ils conviennent très bien à mon droïde 2, mais je sais qu'ils ne s'afficheront pas de la même manière sur les droïdes plus petits. Est-ce que quelqu'un sait la bonne façon de formatage de texte de taille différente pour s'assurer qu'il fonctionnera sur tous les androïdes?Dois-je utiliser dip, dp, sip ou sp pour le formatage du texte?

+1

Définir le travail. Cela fonctionnera sur tous les droïdes.Cela dépend simplement de la façon dont vous voulez l'afficher. – Falmarri

Répondre

6

Si vous voulez juste faire un texte plus ou moins important, vous devriez préférer utiliser les styles par défaut fournis par Android:

<TextView ... android:textAppearance="?android:attr/textAppearanceMedium" /> 
<TextView ... android:textAppearance="?android:attr/textAppearanceLarge" /> 
<TextView ... android:textAppearance="?android:attr/textAppearanceSmall" /> 

Aucun d'entre eux est par défaut, par défaut est:

<TextView ... android:textAppearance="?android:attr/textAppearance" /> 

Il peut être sûrement appliquée non seulement à TextView, mais à d'autres points de vue aussi bien.

3

Google recommande d'utiliser sp pour les dimensions de la taille du texte. Les mises en page que vous utiliserez devront fonctionner de telle sorte que lorsque la mise à l'échelle fonctionne, toutes les tailles fonctionnent au mieux (vous pouvez avoir besoin de mises en page pour différentes tailles d'écran). Si le texte peut ne pas convenir, l'envelopper ou ellipsize il

0

SP et DP ne semblent pas fonctionner comme prévu. DP est supposé être "indépendant de l'affichage", et SP est décrit comme étant le même; mais peut être mis à l'échelle (vraisemblablement par des commandes "zoom"). Cependant, ils ne fonctionnent pas comme prévu. Par exemple, j'ai deux appareils, un téléphone 320x480 et un Nexus; qui est 800x1280 MAIS qui se décrit comme sw600 (je ne sais pas pourquoi). Pour voir ce qui se passait, j'ai ajouté un textview à ma vue, qui se compose de 60 caractères X (choisis parce qu'ils ressemblent au même crénage que monospaced).

La zone textView textSize a été définie sur 10dp, et 60 d'entre eux remplissent entièrement l'écran Nexus. Cependant, ils apparaissent exactement la même taille sur le téléphone, et forment près de deux lignes. Ainsi, il semble que DP ne soit pas indépendant de l'affichage; mais décrit simplement le nombre (approximatif) de pixels que chaque caractère sera donné au maximum. La définition de la cote dans SP ne fait aucune différence.

Ce n'est pas très utile - Je m'attendais à ce qu'une forme de mise à l'échelle soit appliquée, ainsi je pourrais choisir une taille appropriée sur mon téléphone, et elle serait mise à l'échelle pour le Nexus. Par exemple, si ma ligne de texte comportait une trentaine de caractères et que je voulais qu'elle remplisse toute une ligne sur l'écran, je la définirais comme 10dp; et chaque dp serait un pixel (à peu près). Ensuite, quand il était dessiné sur le Nexus, chaque dp aurait deux pixels, et il apparaîtrait deux fois la taille.

Ce n'est pas comme ça que ça fonctionne, pour autant que je sache; ce qui le rend plutôt inutile.

Ma seule solution, et ce n'est pas une élégante, est d'utiliser uniquement les dimensions d'un fichier dimens.xml, et d'avoir six d'entre eux, un pour chacune des largeurs communes (240.320.480.600.720.800 - tout peut trier plus elle-même), puis concevoir mon code pour tenir sur le Nexus, et utiliser une feuille de calcul que j'ai écrit pour redimensionner les valeurs dans dimens.xml pour les largeurs communes. C'est une douleur. mais ça marche.

Sauf si je l'utilise mal, le système Android est juste cassé.