J'ai récemment construit une application Android utilisant html, css, javascript et les exécutant via phonegap pour créer l'application réelle. L'un des problèmes que j'ai rencontré dans un téléphone est que le texte semble trop petit. De plus, certaines images sont un peu petites. J'ai ajouté une balise méta viewport mais cela ne semble pas fonctionner non plus. Voici les balises META:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" />`
Voici à quoi ça ressemble
Voici à quoi est censé ressembler:
J'avais le même problème et je l'ai résolu en changeant la fenêtre d'affichage . Je pensais aussi que le problème était un écart de téléphone, mais en réalité, les appareils utilisés pour les tests avaient une résolution différente.
Ma solution consistait à modifier la densité cible-cible dans la fenêtre d'affichage en:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, target-densitydpi=medium-dpi, user-scalable=0" />
J'espère que ça aide
J'ai eu un problème similaire et j'ai fait quelques recherches qui méritaient d'être partagées:
Définissez le target-densitydpi
de la fenêtre d'affichage sur medium-dpi
(= 160dpi), comme suggéré précédemment. Ceci virtualise l'unité px
, par exemple. 1px
en html/css correspond alors à 2 pixels physiques sur un périphérique de 320 dpi. Notez que les images sont également redimensionnées (et floues).
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=medium-dpi" />
CSS: Utilisez des requêtes de média pour implémenter un style conditionnel. L'adaptation à différentes tailles d'écran en fonction de la largeur, de la hauteur, de l'aspect ou de l'orientation est simple. device-pixel-ratio
permet de traiter différentes densités de pixels (merci à Marc Edwards de fournir un exemple: https://Gist.github.com/marcedwards/3446599 ).
@media screen and (-webkit-min-device-pixel-ratio: 1.5),
screen and (-o-min-device-pixel-ratio: 15/10)
{
body { background-image: ... } /* provide high-res image */
}
La fonctionnalité multimédia resolution
est plus propre que device-pixel-ratio
, mais elle ne prend pas en charge le navigateur mobile.
Javascript: adapter la taille des boutons, les images, etc. en fonction de window.devicePixelRatio
et window.screen.width
et window.screen.height
. La mise en page par Javascript est considérée comme une mauvaise pratique. Un scintillement peut également survenir pendant le chargement, car l'exécution commence après l'événement pageload
.
-webkit-image-set
et image src-set
permettent de fournir facilement des images haute résolution pour les écrans Retina, voir http://www.html5rocks.com/en/mobile/high-dpi/#toc-bff . La prise en charge du navigateur est limitée.
background-image: -webkit-image-set(
url(icon1x.jpg) 1x,
url(icon2x.jpg) 2x
);
Il semble que la suppression du target-densitydpi
apporte les meilleurs résultats.
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
Cela devrait être plus que suffisant pour contrôler l'apparence de votre application dans la plupart des cas.
densité-cibledpi = Moyenne-dpi Travaillé pour nous.
Scénario Ce problème a été résolu lors de la mise à niveau de PhoneGap 2.2 à 3.3.
Réponse mise à jour: pour Android
Le problème est sur les appareils Android a ce Accessibilly paramètres, vous pouvez essayer de changer la taille de la police (recherche taille de la police sur le paramètre Android) et relancez votre application.
Ainsi, vos polices sur l'application seront modifiées en fonction de vos paramètres
Utiliser:mobile-accessibility pour désactiver PreferredTextZoom
Installez mobile-accessibility sur votre projet Cordova
$ cordova plugin add https://github.com/phonegap/phonegap-mobile-accessibility.git
Et JS part est quelque chose comme:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
if (window.MobileAccessibility) {
window.MobileAccessibility.usePreferredTextZoom(false);
}
}
Pour Windows Phone (WP8), j'ai trouvé la solution suivante: https://github.com/phonegap/phonegap-app-developer/issues/92
<meta name="viewport" content="width=device-width, initial-scale=1" />
ajouter au patch IE 10:
(function () { if ("-ms-user-select" dans document.documentElement.style && navigator.userAgent.match (/IEMobile/10.0/)) { var msViewportStyle = document.createElement (" style "); msViewportStyle.appendChild ( document.createTextNode (" @ - ms-viewport {width: auto! important} ") ); document.getElementsByTagName (" tête ") [ 0] .appendChild (msViewportStyle); } }) ();