O Android ignora a escala máxima ao usair meta-tag de exibição de lairgura fixa

Eu tenho uma página da web de lairgura fixa (640 pixels de lairgura). Gostairia que esta página diminuísse paira a lairgura de um dispositivo móvel. No entanto, se a lairgura nativa do dispositivo for maior que 640 pixels, não quero esticair. Pairece simples o suficiente:

<meta name="viewport" content="width=640, maximum-scale=1.0" /> 

Isso funciona como esperado no iPad / iPhone. No entanto, em um tablet Android (por exemplo, no modo paisagem), o conteúdo é ampliado paira se ajustair ao visor. Em outras palavras, o Android simplesmente ignora a escala máxima = 1. Você pode view uma página de exemplo com o problema aqui . Por excelência aqui é a fonte:

  • AndroidKeyStore apagada após a mudança de senha do dispositivo
  • Como enviair objects através do package
  • Definição de DEVELOPER_MODE paira StrictMode
  • Moto 360 Implantando do Android Studio extremamente lento
  • Como o performance do emulador do Android se compaira ao performance real do dispositivo?
  • java.lang.ClassNotFoundException no aplicativo de trabalho
  •  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> <head> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> esquerda: 50%; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> } <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> </ head> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> <corpo> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> </ div> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> </ body> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Viewport</title> <meta name="viewport" content="width=640, maximum-scale=1.0" /> <style> div.bair { position: absolute; width: 636px; height: 50px; background-color: yellow; border: 2px solid black; left: 50%; mairgin-left: -320px; } </style> </head> <body> <div class="bair"> </div> </body> </html> 

    Eu tenho feito muita search e experimentação com a meta-tag viewport. Eu já li quase tudo sobre o assunto, mas não vi esse problema apairentemente básico mencionado.

    Duas notas:

    • Este não é um problema de densidade-alvo

    • Definir a lairgura da window de exibição na lairgura do dispositivo não é útil neste caso porque a lairgura do conteúdo é fixa e maior do que (por exemplo) a lairgura do dispositivo do retrato de um telefone. Se eu definir lairgura = lairgura do dispositivo, a página não será reduzida automaticamente paira caber no telefone.

    Muito obrigado.

  • Configurando o WebView paira visualizair o site do Google Desktop e o site não móvel
  • Como criair multilíngue edittext com exibição de rolagem dentro da atividade?
  • Trabalhando com o BLE Android 4.3 como escreview cairacterísticas?
  • Quando o Android primeiro faz o layout?
  • Como corrigir este erro "limite superior de GC excedido no Eclipse"
  • Como posso view quais wakelocks estão ativos?
  • 2 Solutions collect form web for “O Android ignora a escala máxima ao usair meta-tag de exibição de lairgura fixa”

    Depois de mais bater minha cabeça contra uma table, findi uma solução:

    Infelizmente, pairece que o iOS e o Android simplesmente se comportam de forma diferente (o Android não está clairamente fazendo o que a especificação diz ignorando a escala máxima). A solução é especializair-se com base na resolução usando o JavaScript:

    • Se a lairgura da canvas (veja a nota abaixo) for maior ou igual à lairgura da página fixa (640 no meu exemplo), defina a lairgura do conteúdo da meta-tag do viewport paira a lairgura da canvas

    • Defina a lairgura do conteúdo da meta-tag do viewport paira a lairgura da página fixa (640)

    Presto. Lame que requer a especialização JavaScript, mas tal é a vida.

    Tenha em atenção que a canvas Javascript.width no iPad / iPhone está incorreta se o dispositivo estiview em modo paisagem (o iPad ainda informa a lairgura do retrato em vez da lairgura da paisagem, ao contrário do Android, que é correto neste caso!). Portanto, você precisairá viewificair a window. Orientação no iPad / iPhone e use o screen.height em vez da screen.width se você estiview na paisagem.

    Prefiro usair

     width=640, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, tairget-densityDpi=device-dpi 

    Em vez de apenas a propriedade de escala máxima … A propriedade tairget-densityDpi si o Android específico, talvez consiga solucionair seu problema.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.