Taille du texte et différentes tailles d'écran Android

121

Je sais, cela a déjà été discuté 1000 fois, mais je ne peux pas ajuster la taille du texte pour différentes tailles d'écran. J'essaie d'utiliser 'sp' comme unités de taille dans mon style personnalisé:

<style name="CustumButtonStyle" parent="@android:style/Widget.Button">
    ...
    <item name="android:textSize">30sp</item>
    ...
</style>

Dans 2.7 QVGA, cela semble correct:

2.7QVGA 30sp

Mais dans WSVGA 7in, cela ressemble à ceci:

7 pouces WSVGA 30sp

J'ai essayé d'utiliser à la fois «sp» et «dp» avec le même résultat.

Pourriez-vous s'il vous plaît expliquer comment rendre ces boutons identiques sur n'importe quel écran?

Le style de bouton personnalisé complet

<style name="CustumButtonStyle" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/custom_button</item>
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">3dp</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:gravity">center</item>
    <item name="android:textSize">30sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:shadowColor">#000000</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">2</item>
</style>

Et dans mon thème d'application, j'ai

<item name="android:buttonStyle">@style/CustumButtonStyle</item>

Et voici ma mise en page:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:background="@drawable/grid"
android:gravity="center"
android:orientation="vertical" android:layout_height="fill_parent">

<Button
    android:id="@+id/buttonContinue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_gravity="center"
    android:gravity="center"
    android:text="@string/continue_game" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/>



<Button
    android:id="@+id/buttonNewGame"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/buttonContinue"
    android:layout_alignRight="@+id/buttonContinue"
    android:layout_below="@+id/buttonContinue"
    android:layout_gravity="center"
    android:gravity="center"
    android:text="@string/new_game" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/>



<Button
    android:id="@+id/ButtonAbout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/buttonNewGame"
    android:layout_alignRight="@+id/buttonNewGame"
    android:layout_below="@+id/buttonNewGame"
    android:layout_gravity="center"
    android:gravity="center"
    android:text="@string/about" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/>

forcelaine
la source
Sur vos écrans, ils se ressemblent. Assurez-vous que l'échelle de votre spectateur est de 100%
Dmitry Zaytsev
vous pouvez trouver la réponse à partir d'ici stackoverflow.com/questions/16706076/…
Bhavesh Jethani

Réponses:

160

@forcelain Je pense que vous devez vérifier ce PDF Google IO pour la conception . Dans ce pdf, allez à la page n °: 77 dans laquelle vous trouverez comment suggérer d'utiliser dimens.xml pour différents appareils d'Android pour Exemple voir la structure ci-dessous:

res/values/dimens.xml

res/values-small/dimens.xml

res/values-normal/dimens.xml

res/values-large/dimens.xml

res/values-xlarge/dimens.xml

par exemple, vous avez utilisé ci-dessous dimens.xml dans les valeurs.

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

Dans un autre dossier de valeurs, vous devez modifier les valeurs de votre taille de texte.

Remarque: comme indiqué par @espinchi, les options small, normal, large et xlarge sont obsolètes depuis Android 3.2 au profit de ce qui suit:

Déclaration des dispositions de tablette pour Android 3.2

Pour la première génération de tablettes exécutant Android 3.0, la bonne façon de déclarer les dispositions de tablette était de les placer dans un répertoire avec le qualificatif de configuration xlarge (par exemple, res / layout-xlarge /). Afin de prendre en charge d'autres types de tablettes et de tailles d'écran, en particulier les tablettes de 7 pouces, Android 3.2 introduit une nouvelle façon de spécifier des ressources pour des tailles d'écran plus discrètes. La nouvelle technique est basée sur la quantité d'espace dont votre mise en page a besoin (comme 600dp de largeur), plutôt que d'essayer d'adapter votre mise en page aux groupes de tailles généralisés (tels que large ou xlarge).

La raison pour laquelle la conception de tablettes 7 "est délicate lorsque l'on utilise les groupes de tailles généralisés est qu'une tablette 7" est techniquement dans le même groupe qu'un combiné 5 "(le grand groupe). Bien que ces deux appareils soient apparemment proches l'un de l'autre en taille , la quantité d'espace pour l'interface utilisateur d'une application est très différente, tout comme le style d'interaction de l'utilisateur. Ainsi, un écran de 7 pouces et de 5 pouces ne doit pas toujours utiliser la même disposition. Pour vous permettre de fournir des dispositions différentes pour ces deux types d'écrans, Android vous permet désormais de spécifier vos ressources de mise en page en fonction de la largeur et / ou de la hauteur réellement disponibles pour la mise en page de votre application, spécifiées en unités dp.

Par exemple, après avoir conçu la mise en page que vous souhaitez utiliser pour les appareils de type tablette, vous pouvez déterminer que la mise en page cesse de fonctionner correctement lorsque la largeur de l'écran est inférieure à 600 dpi. Ce seuil devient ainsi la taille minimale dont vous avez besoin pour la mise en page de votre tablette. En tant que tel, vous pouvez désormais spécifier que ces ressources de mise en page doivent être utilisées uniquement lorsqu'il y a au moins 600 dpi de largeur disponible pour l'interface utilisateur de votre application.

Vous devez soit choisir une largeur et une conception correspondant à votre taille minimale, soit tester quelle est la plus petite largeur prise en charge par votre mise en page une fois qu'elle est terminée.

Remarque: n'oubliez pas que tous les chiffres utilisés avec ces nouvelles API de taille sont des valeurs de pixels indépendantes de la densité (dp) et les dimensions de votre mise en page doivent également toujours être définies à l'aide d'unités dp, car ce qui vous importe, c'est la quantité d'espace d'écran disponible après le système. tient compte de la densité de l'écran (par opposition à l'utilisation de la résolution de pixels bruts). Pour plus d'informations sur les pixels indépendants de la densité, lisez Termes et concepts, plus haut dans ce document. Utilisation de nouveaux qualificatifs de taille

Les différentes configurations de ressources que vous pouvez spécifier en fonction de l'espace disponible pour votre mise en page sont résumées dans le tableau 2. Ces nouveaux qualificatifs vous offrent plus de contrôle sur les tailles d'écran spécifiques prises en charge par votre application, par rapport aux groupes de tailles d'écran traditionnels (petit, normal, large et xlarge).

Remarque: les tailles que vous spécifiez à l'aide de ces qualificatifs ne sont pas les tailles d'écran réelles. Les tailles correspondent plutôt à la largeur ou à la hauteur en unités dp disponibles dans la fenêtre de votre activité. Le système Android peut utiliser une partie de l'écran pour l'interface utilisateur du système (comme la barre système en bas de l'écran ou la barre d'état en haut), de sorte qu'une partie de l'écran peut ne pas être disponible pour votre mise en page. Ainsi, les tailles que vous déclarez doivent concerner spécifiquement les tailles requises par votre activité - le système tient compte de tout espace utilisé par l'interface utilisateur du système lors de la déclaration de l'espace qu'il fournit pour votre mise en page. Sachez également que la barre d'action est considérée comme faisant partie de l'espace de fenêtre de votre application, bien que votre mise en page ne la déclare pas, elle réduit donc l'espace disponible pour votre mise en page et vous devez en tenir compte dans votre conception.

Tableau 2. Nouveaux qualificatifs de configuration pour la taille de l'écran (introduits dans Android 3.2). Configuration de l'écran Valeurs du qualificatif Description smallestWidth swdp

Exemples: sw600dp sw720dp

La taille fondamentale d'un écran, comme indiqué par la dimension la plus courte de la zone d'écran disponible. Plus précisément, la plus petite largeur de l'appareil est la plus courte de la hauteur et de la largeur disponibles de l'écran (vous pouvez également la considérer comme la «plus petite largeur possible» pour l'écran). Vous pouvez utiliser ce qualificatif pour vous assurer que, quelle que soit l'orientation actuelle de l'écran, votre application dispose d'au moins dps de largeur disponible pour son interface utilisateur.

Par exemple, si votre mise en page nécessite que sa plus petite dimension de la zone d'écran soit d'au moins 600 dp à tout moment, vous pouvez utiliser ce qualificatif pour créer les ressources de mise en page, res / layout-sw600dp /. Le système utilisera ces ressources uniquement lorsque la plus petite dimension de l'écran disponible est d'au moins 600dp, que le côté 600dp soit la hauteur ou la largeur perçue par l'utilisateur. La plus petite largeur est une caractéristique de taille d'écran fixe de l'appareil; la plus petite largeur de l'appareil ne change pas lorsque l'orientation de l'écran change.

La plus petite largeur d'un appareil prend en compte les décorations d'écran et l'interface utilisateur du système. Par exemple, si l'appareil a des éléments d'interface utilisateur persistants à l'écran qui tiennent compte de l'espace le long de l'axe de la plus petite largeur, le système déclare que la plus petite largeur est plus petite que la taille réelle de l'écran, car ce sont des pixels d'écran non disponibles pour votre interface utilisateur.

Il s'agit d'une alternative aux qualificatifs de taille d'écran généralisés (small, normal, large, xlarge) qui vous permet de définir un nombre discret pour la taille effective disponible pour votre interface utilisateur. L'utilisation de smallestWidth pour déterminer la taille générale de l'écran est utile car la largeur est souvent le facteur déterminant dans la conception d'une mise en page. Une interface utilisateur défile souvent verticalement, mais a des contraintes assez strictes sur l'espace minimum dont elle a besoin horizontalement. La largeur disponible est également le facteur clé pour déterminer s'il faut utiliser une disposition à un volet pour les combinés ou une disposition à plusieurs volets pour les tablettes. Ainsi, vous vous souciez probablement le plus de la largeur la plus petite possible sur chaque appareil. Largeur d'écran disponible wdp

Exemples: w720dp w1024dp

Spécifie une largeur minimale disponible en unités dp à laquelle les ressources doivent être utilisées, définie par la valeur. La valeur correspondante du système pour la largeur change lorsque l'orientation de l'écran bascule entre paysage et portrait pour refléter la largeur réelle actuelle disponible pour votre interface utilisateur.

Cela est souvent utile pour déterminer s'il faut utiliser une disposition à plusieurs volets, car même sur une tablette, vous ne souhaiterez souvent pas la même disposition à plusieurs volets pour l'orientation portrait que pour le paysage. Ainsi, vous pouvez l'utiliser pour spécifier la largeur minimale requise pour la mise en page, au lieu d'utiliser à la fois les qualificatifs de taille d'écran et d'orientation. Hauteur d'écran disponible hdp

Exemples: h720dp h1024dp etc.

Spécifie une hauteur d'écran minimale en unités dp à laquelle les ressources doivent être utilisées, définie par la valeur. La valeur correspondante du système pour la hauteur change lorsque l'orientation de l'écran bascule entre paysage et portrait pour refléter la hauteur réelle actuelle disponible pour votre interface utilisateur.

Utiliser ceci pour définir la hauteur requise par votre mise en page est utile de la même manière que wdp est pour définir la largeur requise, au lieu d'utiliser à la fois les qualificatifs de taille d'écran et d'orientation. Cependant, la plupart des applications n'auront pas besoin de ce qualificatif, étant donné que les interfaces utilisateur défilent souvent verticalement et sont donc plus flexibles avec la hauteur disponible, alors que la largeur est plus rigide.

Bien que l'utilisation de ces qualificatifs puisse sembler plus compliquée que l'utilisation de groupes de tailles d'écran, cela devrait en fait être plus simple une fois que vous avez déterminé les exigences de votre interface utilisateur. Lorsque vous concevez votre interface utilisateur, la principale chose qui vous importe probablement est la taille réelle à laquelle votre application bascule entre une interface utilisateur de type combiné et une interface utilisateur de style tablette qui utilise plusieurs volets. Le point exact de ce commutateur dépendra de votre conception particulière - peut-être avez-vous besoin d'une largeur de 720dp pour la disposition de votre tablette, peut-être que 600dp est suffisant, ou 480dp, ou un nombre entre ceux-ci. En utilisant ces qualificatifs du tableau 2, vous contrôlez la taille précise à laquelle votre mise en page change.

Pour plus d'informations sur ces qualificatifs de configuration de taille, consultez le document Fournir des ressources. Exemples de configuration

Pour vous aider à cibler certaines de vos conceptions pour différents types d'appareils, voici quelques chiffres pour les largeurs d'écran typiques:

320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
480dp: a tweener tablet like the Streak (480x800 mdpi).
600dp: a 7 tablet (600x1024 mdpi).
720dp: a 10 tablet (720x1280 mdpi, 800x1280 mdpi, etc).

En utilisant les qualificatifs de taille du tableau 2, votre application peut basculer entre vos différentes ressources de mise en page pour les combinés et les tablettes en utilisant le nombre de votre choix pour la largeur et / ou la hauteur. Par exemple, si 600dp est la plus petite largeur disponible prise en charge par la disposition de votre tablette, vous pouvez fournir ces deux ensembles de dispositions:

res / layout / main_activity.xml # Pour les combinés res / layout-sw600dp / main_activity.xml # Pour les tablettes

Dans ce cas, la plus petite largeur de l'espace d'écran disponible doit être de 600 dpi pour que la disposition de la tablette soit appliquée.

Pour les autres cas dans lesquels vous souhaitez personnaliser davantage votre interface utilisateur afin de différencier les tailles telles que les tablettes de 7 "et 10", vous pouvez définir des dispositions supplémentaires de plus petite largeur:

res / layout / main_activity.xml # Pour les combinés (largeur disponible inférieure à 600 dpi) res / layout-sw600dp / main_activity.xml # Pour les tablettes de 7 pouces (600 dpi de large et plus) res / layout-sw720dp / main_activity.xml

Pour les tablettes de 10 pouces (720 dpi de large et plus)

Notez que les deux ensembles précédents d'exemples de ressources utilisent le qualificatif «plus petite largeur», swdp, qui spécifie le plus petit des deux côtés de l'écran, quelle que soit l'orientation actuelle du périphérique. Ainsi, utiliser swdp est un moyen simple de spécifier la taille d'écran globale disponible pour votre mise en page en ignorant l'orientation de l'écran.

Cependant, dans certains cas, ce qui peut être important pour votre mise en page, c'est exactement la largeur ou la hauteur actuellement disponible. Par exemple, si vous disposez d'une disposition à deux volets avec deux fragments côte à côte, vous pouvez l'utiliser chaque fois que l'écran offre au moins 600 dpi de largeur, que l'appareil soit en orientation paysage ou portrait. Dans ce cas, vos ressources peuvent ressembler à ceci:

res / layout / main_activity.xml # Pour les combinés (largeur disponible inférieure à 600dp) res / layout-w600dp / main_activity.xml # Multi-volet (tout écran avec une largeur disponible de 600dp ou plus)

Notez que le deuxième ensemble utilise le qualificatif «largeur disponible», wdp. De cette façon, un appareil peut en fait utiliser les deux dispositions, en fonction de l'orientation de l'écran (si la largeur disponible est d'au moins 600dp dans une orientation et inférieure à 600dp dans l'autre orientation).

Si la hauteur disponible vous préoccupe, vous pouvez faire de même en utilisant le qualificatif hdp. Ou combinez même les qualificatifs wdp et hdp si vous avez besoin d'être vraiment spécifique.

Herry
la source
7
Ces small / normal / large / xlarge sont obsolètes pour le moment (décembre 2014). La méthode préférée est maintenant d'utiliser "swxxxdp". Voir developer.android.com/guide/practices/…
espinchi
1
@espinchi merci, vous devriez poster ceci aussi comme réponse. Existe-t-il également des dp recommandés? par exemple, les normes sont: 100sw, 200sw, 400sw, 600sw.
Vince V.
19

Je pense qu'il est trop tard pour répondre sur ce fil. Mais je voudrais partager mon idée ou mon moyen de résoudre le problème de taille du texte sur les appareils de résolution de différence. De nombreux sites de développeurs Android suggèrent que nous devions utiliser l' unité sp pour la taille du texte, qui gérera la taille du texte pour les appareils de résolution différente. Mais je suis toujours incapable d'obtenir le résultat souhaité. J'ai donc trouvé une solution que j'utilise à partir de mes 4-5 derniers projets et cela fonctionne bien. Selon ma suggestion, vous devez placer la taille du texte pour chaque périphérique de résolution, ce qui est un travail un peu fastidieux, mais cela répondra à vos besoins. Chaque développeur doit écouter le rapport comme 4: 6: 8: 12 (h: xh: xxh: xxxh respectivement) . Maintenant , dans votre projet res dossier , vous devez créer un dossier avec 4 fichier dimens par exemple

  1. res / values-hdpi / dimens.xml
  2. res / values-xhdpi / dimens.xml
  3. res / values-xxhdpi / dimens.xml
  4. res / values-xxxhdpi / dimens.xml

Maintenant, dans le fichier dimens.xml, vous devez placer les tailles de texte. Je vous montre le code pour values-hdpi , de même vous devez placer le code pour d'autres valeurs de résolution / fichier dimens.xml.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">4px</dimen>
</resources>

Pour les autres résolutions, c'est comme xhdpi : 6px, xxhdpi : 8px, xxxhdpi : 12px. Ceci est calculé avec le rapport (3: 4: 6: 8: 12) que j'ai écrit ci-dessus. Permet de discuter d'un autre exemple de taille de texte avec le ratio ci-dessus. Si vous souhaitez prendre une taille de texte de 12px en hdpi, alors dans une autre résolution, ce serait

  1. hdpi: 12px
  2. xhdpi: 18px
  3. xxhdpi: 24px
  4. xxxhdpi: 36px

C'est la solution simple pour implémenter la taille de texte requise pour toutes les résolutions. Je ne considère pas ici les périphériques de résolution valeurs-mdpi . Si quelqu'un veut inclure la taille du texte pour cette résolution, la ration est comme 3: 4: 6: 8: 12 . Pour toute question, veuillez me le faire savoir. J'espère que cela vous aidera.

Rahul Sharma
la source
4
N'est-ce pas une mauvaise pratique d'utiliser px au lieu de sp dans la taille du texte? Existe-t-il un moyen d'atteindre le ratio suivant en utilisant sp au lieu de px?
Red M
J'ai vérifié que cela fonctionnait bien, mais je suis toujours confus. Est-ce une bonne pratique d'utiliser des valeurs en px au lieu de dp / sp? Je n'ai jamais vu quelque part dans la documentation officielle utiliser des valeurs dans px.
shaby
1
utilisez sp pour la taille de la police, c'est la loi. L'approche que Rahul a montré est correcte, utilisez simplement sp au lieu de px.
Mihir Patel
sp doit être utilisé en cas de planification pour lier la taille de la police de l'application à la taille de la police du système, sinon cette solution n'est pas mauvaise.
Irfan Ul Haq le
12

Parfois, il vaut mieux n'avoir que trois options

 style="@android:style/TextAppearance.Small"

Utilisez petit et grand pour différencier de la taille d'écran normale.

<TextView
            android:id="@+id/TextViewTopBarTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@android:style/TextAppearance.Small"/>

Pour normal, vous n'avez rien à spécifier.

<TextView
            android:id="@+id/TextViewTopBarTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

En utilisant cela, vous pouvez éviter de tester et de spécifier des dimensions pour différentes tailles d'écran.

kalan nawarathne
la source
10

J'ai fait la même chose par dimension et j'ai peint quelque chose comme (avec dp mais uniquement pour le texte et dans drawText ())

XML:

   <dimen name="text_size">30sp</dimen>

Code:

   Paint p =new Paint();
       p.setTextSize(getResources().getDimension(R.dimen.text_Size));
Mode de vie
la source
8
Vous ne devez PAS utiliser dppour la taille du texte ... utilisez à la spplace.
Yousha Aleayoub
veuillez utiliser sp pour la taille du texte
Thinsky
Vous pouvez utiliser dp dans des situations spécifiques lorsque vous ne souhaitez pas qu'il soit redimensionné en fonction des préférences de l'utilisateur.
7

Tout le monde peut utiliser la bibliothèque Android mentionnée ci-dessous, qui est le moyen le plus simple de rendre les tailles de texte compatibles avec presque tous les écrans des appareils. Il s'est en fait développé sur la base de nouveaux qualificatifs de configuration Android pour la taille de l'écran (introduits dans Android 3.2) SmallestWidth swdp.

https://github.com/intuit/sdp

Muhammad Maqsood
la source
2
sdp est pour la taille de l'écran; utiliser ssp pour la taille du texte
ecle
Cela fonctionne pour moi, mais je soupçonne qu'il y a trop de fichiers à ajouter, cela augmentera la taille de l'application, @Muhammad vous pouvez redimensionner et ajouter uniquement des classes selon les besoins
Kirtikumar A.
1

Si vous disposez de l'API 26, vous pouvez envisager d'utiliser autoSizeTextType :

<Button
  app:autoSizeTextType="uniform" />

Le paramètre par défaut permet le dimensionnement automatique de TextView à l'échelle uniformément sur les axes horizontaux et verticaux.

https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview

Bonne Bogaert
la source
Le problème avec ceci est que cela ne change pas uniformément la taille du texte pour les vues de texte multiples avec des chaînes de différentes longueurs
Sourabh S Nath
0

Je pense que vous pouvez archiver cela en ajoutant plusieurs ressources de mise en page pour chaque taille d'écran, exemple:

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size with small text
res/layout-large/my_layout.xml       // layout for large screen size with larger text
res/layout-xlarge/my_layout.xml      // layout for extra large screen size with even larger text
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

Référence: 1. http://developer.android.com/guide/practices/screens_support.html

NguyenDat
la source
2
Utilisez res / values-small peut être préférable.
einverne
1
l'une des pires implémentations. nous devons maintenir 5 mises en page juste pour prendre en charge différentes tailles?
SolidSnake
Créer différentes mises en page pour simplement réduire la taille du texte dans les écrans de variantes est une très mauvaise idée. Je ne recommande pas ça
Saman Salehi
0

Pour unifier tous les écrans pour afficher les mêmes tailles d'éléments, y compris la taille de la police: - Concevez l'interface utilisateur sur une taille d'écran avec toutes les tailles que vous trouvez appropriées pendant la conception, c'est-à-dire que la taille de la police TextView est de 14dp sur la taille d'écran par défaut avec 4'6 pouces.

  • Calculez par programme la taille physique de l'écran des autres téléphones, c'est-à-dire 5'2 pouces des autres téléphones / écrans.

  • Utilisez une formule pour calculer la différence en pourcentage entre les 2 écrans. c'est-à-dire quelle est la différence en% entre 4'6 et 5'2.

  • Calculez la différence de pixels entre les 2 TextViews en vous basant sur la formule ci-dessus.

  • Obtenez la taille réelle (en pixels) de la taille de police TextView et appliquez la différence de pixels (que vous avez calculée précédemment) à la taille de police par défaut.

De cette façon, vous pouvez appliquer un rapport hauteur / largeur dynamique à toutes les tailles d'écran et le résultat est excellent. Vous aurez une disposition et des tailles identiques sur chaque écran.

Cela peut être un peu délicat au début, mais atteint totalement l'objectif une fois que vous avez compris la formule. Avec cette méthode, vous n'avez pas besoin de créer plusieurs mises en page simplement pour s'adapter à différentes tailles d'écran.

SolidSnake
la source
0

Vous pouvez également utiliser weightSumet layout_weightpropriété pour ajuster vos différents écrans.

Pour cela, vous devez faire android:layout_width= 0dp, et android:layout_width= (ce que vous voulez);

Harshit
la source
-1

Comme @espinchi l'a mentionné à partir de 3.2 (niveau d'API 13), les groupes de taille sont obsolètes. Les gammes de tailles d'écran sont l'approche privilégiée à l'avenir.

Jacques Kammeyer
la source
-2

Ne codez pas en dur les tailles.

Pour plus de flexibilité et de nouvelles résolutions d'écran, la meilleure pratique consiste à placer TextView factice dans la mise en page pour obtenir le textSize:

<TextView
        android:id="@+id/dummyTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:text="TextView" />

Et dans votre code par exemple:

TextView testTextView = (TextView) rootView.findViewById(R.id.dummyTextView);
float textSize = testTextView.getTextSize();

Gardez textSizecomme référence à laquelle vous pouvez ajouter une taille constante ou en pourcentage (en calculant).

Athlan
la source