- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的应用程序很简单 WebView
以固定横向显示网页的“包装器”,页面有一个居中的 div,宽 760 像素,高 415 像素,这应该在所有设备上按比例显示,以便(大致)适合屏幕,用户不能更改缩放...除了缩放之外,我几乎一切正常。
我在页面上有以下视口(viewport)元标记:
<meta name="viewport" content="width=device-width, target-densityDpi=device-dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
WebView
的 list wrapper .apk
我创建的如下:
<supports-screens android:smallScreens="true"
android:normalScreens="true" android:largeScreens="true"
android:anyDensity="true" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="{my name}"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我应该提一下,原来是 .apk
目标是 Android 2.2,我最近更改为 2.3.1 并在 list 中添加了另一行,但这对任何事情都没有影响:
android:xlargeScreens="true"
我在 .java
中添加了以下内容代码:
webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webview.setScrollbarFadingEnabled(false);
webview.getSettings().setSupportZoom(false);
webview.getSettings().setBuiltInZoomControls(false);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
为了这个问题的目的,假设整个站点上的唯一内容是以下 <div>
:
<div style="margin: auto; position:relative; align:center; top:0px; width:760px; height:415px; background-color:#000000">
我的问题是我无法想出一个适用于所有 Android 设备的“一刀切”的缩放解决方案,我交付的其他所有任务都可以正常工作。
我已经在三个不同的设备上尝试过这个,一个平板电脑和两个手机,<div>
的左侧、右侧和底部有一个很大的空隙。层。看起来 760 像素的宽度在两侧还有大约 50 像素的间隙,在每台设备的下方也有相同的间隙,我想要做的就是放大它,让它大致填满所有设备的屏幕。
我的手机显示有一个 window.innerWidth
854 与 window.devicePixelRatio
1.5,如果我将初始和最大比例更改为 1.12,则 <div>
层几乎完全适合我的设备。该表说它有一个 window.innerWidth
980 与 window.devicePixelRatio
1.0,似乎喜欢 1.27 左右的比例。我不知道第三个设备的详细信息,但使用 1.1 似乎可以解决这个问题。
当然,更改初始缩放比例不是解决方案,即使尝试这样做也将是一场彻头彻尾的噩梦,所以,祈祷吧,谁能告诉我我遗漏的非常明显的事情,这将使这项工作成功吗?或者我只是在问不可能自动将 View 缩放到固定大小 <div>
?
最佳答案
对...在回家的路上,我陷入了困境,并进行了愉快的思考,我得出的结论是我对这个问题的思考严重过度了。
这很粗糙,但它完成了工作,我从网站上删除了元标记并将其添加到应用程序中:
// Set up up the scaling value
float scaling = 100;
int display_width;
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
display_width = dm.widthPixels;
scaling = (((float)display_width/760)*100); // 760 here is my container div width
scaling = (int) Math.floor(scaling);
// Set up the webview and apply the scale value
webview = (WebView) findViewById(R.id.webview);
webview.setInitialScale((int)scaling);
效果很好,但自从我发表这篇文章以来,我遇到了两个问题。
首先,通过删除元标记,我似乎已经删除了对最大/最小比例的限制,这意味着单击任何 <INPUT>
显示 Android 键盘的元素将导致缩放比例发生变化。幸运的是,将这一行添加到代码中到目前为止解决了这个问题:
webview.getSettings().setDefaultZoom(ZoomDensity.FAR);
第二个我没有可行的解决方案,某些设备(例如 Archos101 平板电脑)具有软件按钮而不是硬件按钮。这里的缩放代码将缩放到设备宽度,这意味着网站位于软件按钮下方......目前正在考虑实现基于 READ_PHONE_STATE
的解决方案。或者有选择地添加无需硬件按钮即可退出应用程序的功能,并将其添加到 list 中:
<uses-permission android:name="archos.permission.FULLSCREEN.FULL" />
希望其他人能找到这个并节省一些时间。
关于android - 通过 WebView 在 Android 设备上正确缩放网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8607011/
我有这个网站,这个特定页面是安全的,但是当它回发时,它回发到一个不安全的页面。如何解决? 我正在使用 ASP.NET 向导。我有这个页面 - checkout.aspx,页面包含这个控件 checko
我有 2 个 azure 网站 - 两个独立的项目 我现在有 2 个网址: myazurewebsite.azurewebsites.net myazureblog.azurewebsites.net
我有 2 个 azure 网站 - 两个独立的项目 我现在有 2 个网址: myazurewebsite.azurewebsites.net myazureblog.azurewebsites.net
环境: 旧网站: React 托管在 Heroku URL( http://sameurl.com ) 新网站: Java 托管在 Heroku URL ( http://sameurl.com )
我已在 Windows Azure 上注册了一个测试帐户来对其进行测试。我构建了一个 Hello world ASP.NET Web 应用程序 + 数据库只是为了测试。 我安装了 Visual Stu
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
这个问题在这里已经有了答案: Software keyboard resizes background image on Android (16 个答案) 关闭 8 年前。 我有一个类似的问题:So
这个问题似乎很常见,但我真的无法根据现有答案解决问题。 我有一个简单的 maven 项目,没有任何复杂的部署配置等,并且想在点击“mvn site”时生成一个 Maven CheckStyle 报告。
有没有人看过有关何时进行横向扩展与纵向扩展的最佳选择的任何分析或信息。什么时候一个比另一个更有意义。 目前,在标准模式和基本模式下,2 个小型实例的费用与 1 个中型实例的费用相同。 拥有 2 个小型
有没有办法找到 azure 网站何时停止? (我通过门户网站停止了网站,但我不记得是什么时候......) 我正在寻找一些日志,但没有找到任何有用的内容。 谢谢。 最佳答案 您拥有的最接近的是 azu
我目前在 Azure VM 的 IIS 中拥有一个网站。我已将该站点复制到 2 个可用区域中的 2 个虚拟机上。 这可以保护网站免遭停机。 我需要为高负载时刻实现一些可扩展性。这似乎就是创建音阶集的目
我有一个托管在 Azure 上的网站 ( http://mike-ward.azurewebsites.net/ )。我从 Azure 门户设置了一个指向(引用?)我的网站的 Azure CDN。根据
我有一个 Azure 网站(不是 Web 角色),有 2 个槽:生产和暂存。 我只想为生产插槽启用 CDN,而不是为登台启用,问题是我找不到识别主机插槽的方法。 RoleEnvironment 不可用
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。 4年前关
我们正在考虑将一些网站从 Azure 云服务迁移到 Azure 网站(事情似乎就是这样进行的)。显然,我们被明确告知云服务不会保留文件系统状态,因为它们会在机器故障时重新部署。 我假设网站是基于 Bl
我有一个 Azure 网站,需要使用在 VM 上运行的 Elasticsearch 服务。 虽然我需要能够锁定对 Elasticsearch 的访问,以便只有 Azure 网站可以访问它,但我似乎无法
我有一个 azure 网站,位于 yis3.azurewebsites.net - 我已将其提升为“共享”网站,以便我可以使用自定义域。我拥有从 123-reg.co.uk 购买的域名 yorkshi
我正在使用 abcPDF 动态创建 PDF。 我想保存这些 PDF,以便客户随时检索。最简单的方法(也是我现在在当前服务器上所做的方法)是将完成的 PDF 保存到文件系统。 看来我一直坚持使用 blo
我们正在尝试了解 Windows Azure 管理 API 为 Azure 网站(而非 Webroles)返回的监控数据的复杂性 例如,下图描述了为 CPUTime 检索的数据点。它似乎表明,在晚上
看起来真的很愚蠢,因为我找不到它: 门户网站似乎不太直观,我如何为一个“网站”付费并在其中运行最多 500 个网站?我想当我通过单击左下角的加号添加“网站”时,我添加了整个虚拟机而不是子站点。如何仅添
我是一名优秀的程序员,十分优秀!