Comment inclure correctement les dispositions 10" et 7"

Nexus 7: 7" 1280 x 800

Galaxy tab 10.1 10 "1280x800

je veux que mon application fonctionne sur des tablettes de 7 et 10 pouces. Pour autant que je sache, je dois inclure ces dossiers de mise en page dans mon application:

pour comprimés de 7 pouces

  • mise en page-sw600dp
  • mise en page-sw600dp-port

pour comprimés de 10 pouces

  • mise en page-sw720dp
  • mise en page-sw720dp-port

il fonctionne bien sur le nexus 7, mais charge les mises en page sw600dp sur la tablette 10".

si j'inclus ces dossiers par défaut:

  • mise en page
  • layout-port

10" galaxy tab charges de la disposition de ces.

si je n'inclue que les dossiers de mise en page par défaut et le dossier sw600dp, il se bloque sur la nexus7.

Comment suis-je supposé prendre en charge les téléphones, tablettes 7" et tablettes 10", si l'onglet galaxy 10" ne charge pas les mises en page sw720p?

edit: formatage

39
demandé sur berestom 2013-02-26 17:47:22

4 réponses

le problème était que je n'avais pas de dossier de mise en page par défaut.

j'ai essayé de m'en sortir, en utilisant seulement les dossiers sw600dp et sw720dp. Je ne sais toujours pas pourquoi ça ne marche pas, mais je m'en fiche. Je ne peux pas utiliser swxxxdp <3.2 de toute façon, alors laisse tomber.

donc, si vous voulez écrire une application, qui doit prendre en charge les téléphones (2,2+), des tablettes de 7 pouces et des tablettes de 10 pouces, utilisez les trucs oldschool suivants:

mise en page c'est par défaut, il est nécessaire même si vous ne comptez pas l'appui de téléphones!

mise en page-grand pour tablette 7" (fonctionne sur émulateur et nexus7)

mise en page-xlarge pour tablette 10" (fonctionne sur émulateur et galaxytab10.1)

autres personnes sont arrivés à la même conclusion.

58
répondu berestom 2017-05-23 12:25:22

je suis également confronté à un tel problème dans ma demande. Mais j'ai trouvé une bonne solution pour ce. Je n'ai qu'une mise en page pour tablet et le nom du répertoire est layout-sw600dp . Maintenant, quand une partie est venue à des problèmes de hauteur et de largeur, j'ai créé plusieurs différents values répertoire dans lequel je place dimensions et font size et d'autres talons. Il n'y aura donc pas de valeur constant dans layout de l'écran de la tablette.

androd:layout_width:"60dp" // i drop this scenario

androd:layout_width:"@dimen/tab_width" // i used this scenario

et votre values nom du répertoire sera comme

values-xlarge
values-large

toutes les valeurs seront récupérées à partir de votre répertoire de valeurs. Il ne créera pas de mise en page différente, mais une mise en page peut être utilisée plusieurs fois.

Voici les mots du site Developer.android . Exemples de Configuration

pour vous aider À cibler certaines de vos créations pour différents types de dispositifs, voici quelques chiffres pour les largeurs d'écran:

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 n'importe quel nombre que vous voulez pour la largeur et/ou la hauteur. Par exemple, si 600dp est la plus petite largeur disponible supportée par votre disposition de tablette, vous pouvez fournir ces deux ensembles de layouts:

res/layout / main_activity.xml # pour les combinés

res/layout-sw600dp / main_activity.# xml pour les tablettes

= = =

dans ce, vous pouvez voir que, layout pour 1280*720 est sous layout-sw720dp donc au lieu de créer layout-normal-xlarge vous devriez utiliser cette chose qui vous permet de décider des différences. Au lieu de vous identifier différemment en utilisant layout-large-mdpi et layout-large-ldpi , n'êtes-vous pas simplement identifié par son smallest width ? Parce que, android fournissant drawables répertoire pour différentes images, seule chose est sa résolution. Et vous avez la solution ci-dessus.

Modifier

alors vous devez développer des dispositions différentes. Pas d'autre option. J'ai trouvé à http://jamil.fluidsoul.net/2011/03/06/creating-android-applications-for-multiple-screen-sizes .

Low density Small screens QVGA 240x320 (120dpi):

layout-small-ldpi (240x320)  
layout-small-land-ldpi (320x240)

Low density Normal screens WVGA400 240x400 (x432) (120dpi):

layout-ldpi  (240 x 400 )
layout-land-ldpi  (400 x 240 )

Medium density Normal screens HVGA 320x480 (160dpi):

layout-mdpi (320 x 480 )
layout-land-mdpi (480 x 320 )

Medium density Large screens HVGA 320x480 (160dpi):

layout-large-mdpi (320 x 480 )
layout-large-land-mdpi (480 x 320)

Galaxy Tab ( 240 dpi ):

layout-large  (600 x 1024) 
layout-large-land  (1024 x 600)

High density Normal screens WVGA800 480x800 (x854) (240 dpi):

layout-hdpi (480 x 800)
layout-land-hdpi (800 x 480)

Xoom (medium density large but 1280x800 res) (160 dpi):

layout-xlarge (800 x 1280)
layout-xlarge-land (1280 x 800)
21
répondu Chintan Rathod 2013-02-27 06:03:53

Oui, vous devez utiliser des dossiers dépendants de la disposition, mais assurez-vous également que toute disposition indépendante du périphérique va dans votre dossier res/layout.

ceci est mentionné sur le site de développeur Android mais pour réitérer leur point, si vous avez une mise en page qui est seulement disponible dans un dossier layout-xlarge sur une application qui prend en charge dire gros et appareils de taille normale ainsi, l'application va se planter que les appareils plus petits ne seront pas en mesure de trouver une correspondance pour cette ressource.

Voici une bonne structure de dossier, commencez par:

res/layout

Gardez une mise en page indépendante de l'appareil, vous pouvez l'éviter si vous tenez compte de tous les types de qualificatifs possibles, mais c'est quand même l'option la plus sûre.

si vous voulez ajouter des dispositions spécifiques pour des tablettes de 7 et 10 pouces, utilisez tout ce qui suit:

res/layout-large
res/layout-xlarge
res/layout-sw600dp
res/layout-sw720dp
res/layout-sw800dp

et ainsi de suite pour n'importe quelle largeur d'écran de périphérique spécifique que vous voulez soutenir. Il devrait être notez que sw600 supporte la plus petite largeur possible, donc évite l'utilisation de la largeur de l'écran lorsque l'appareil est tenu paysage. Utiliser les qualificatifs swxxxdp est préférable, mais ils ont été ajoutés à L'API 13, donc vous aurez toujours besoin de large, xlarge pour les systèmes D'exploitation Android plus anciens.

en ce qui concerne l'utilisation du dpi, soyez conscient que si vous définissez seulement un qualificatif de densité pour une taille, par exemple layout-large-mdpi , alors tous les dispositifs qui correspondent au grand qualificatif utiliseront des layouts à partir d'ici au lieu de un autre dossier, ceci est dû au meilleur critère de correspondance, que vous pouvez lire sur ici . Il va l'apparier comme un grand appareil avant qu'il ne corresponde à la densité donc les écrans de densité non-mdpi vont toujours utiliser ces layouts.

pour contrer cela, vous devrez inclure des dossiers pour toutes les autres densités que vous supportez aussi bien, donc layout-large-hdpi suivant l'exemple ci-dessus, et inclure dans ce dossier des versions hdpi des layouts que vous avez utilisés le dossier mdpi si vous souhaitez qu'ils soient différents.

évitez de dupliquer vos mises en page aussi bien évidemment, ne copiez pas les mises en page indépendantes du périphérique dans chaque dossier inutilisé si vous n'en avez besoin que dans res/layout , essayez de ne garder que les mises en page qui ont besoin de ces qualificatifs dans les dossiers et organisez-les correctement, en vous assurant que vos dossiers sont nommés avec les qualificatifs dans le bon ordre de priorité pour éviter d'utiliser le mauvais dossier pour une combinaison densité/taille.

2
répondu sturrockad 2013-09-13 14:43:45

C'est très étrange, puisque vous faites la bonne chose.

le qualificatif sw600dp doit être choisi par Nexus 7.

Si disponible, le qualificatif sw720dp doit être sélectionné par L'onglet Galaxy.

êtes-vous sûr qu'il s'écrase en essayant de trouver une mise en page appropriée? Android peut trouver la mise en page correcte, mais quelque chose dans le fichier XML de mise en page peut manquer et le crash est causé par cela.

1
répondu Streets Of Boston 2013-02-26 15:44:50