- 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/
Webview shouldInterceptRequest方法总是返回null。我去了adblocking的use方法。我尝试了很多adblock方法,但是总是需要这个shouldIntercept
在我的 Native React 项目中,我想使用 WebView。 HTML是指外部的css文件,css文件是指一些自定义字体。 鉴于此层次结构: app/ app/index.ios.js app
我在一个页面上有多个 webview,当应用程序加载时,主页面卡住了将近 8-10 秒,我猜测这是所有 webview 加载各自网站所花费的时间,为什么 Ui 卡住了,我怎么能使 webview 加载
nativescript 中的 webview 是否有“导航”事件? 我已经在 Xamarin (c#) 中用 完成了 Browser.Navigating += Myfunction natives
我的浏览器 (webview) 以 HTML 页面开头 FILEJAVA.class.getResource ("FILEHTML.html")。 ToExternalForm () 每当我访问谷歌时
我们正在开发一个 JavaFX 2.x 应用程序,它需要提供一些 GIS 支持。我们得出的结论是,通过嵌入式 WebView 使用 GoogleMaps 是最快的选择。它的问题在于每次我们的应用程序启
有没有办法销毁 WebView 实例?如果页面加载,并说视频开始播放,我希望能够,当我隐藏 WebView 时,基本上可以销毁它,或者至少重置它。 我知道我可以听 visibleProperty 并执
有没有办法在不启用远程模块的情况下在 webview 和主窗口之间进行通信? When this attribute is false the guest page in webview will
我使用以下代码来拦截Web View 中的对话框,但看不到内容或无法与之交互: Element webview= querySelector("#webview"); Map map=new
我正在创建一个页面,该页面将在 Java 的 WebView 中打开,或在外部浏览器中手动打开。如果页面是从 Java 加载的——我需要它来执行特定的回调,因为 Java 被用作一种后端,但如果页面是
我有一个 React Native WebView ,它运行一个小的 HTML 文档。该文档显示了一些图像。 我希望显示位于应用程序的 Documents 文件夹中的图像,即图像不是静态 Assets
我正在使用 JavaFX webview 开发一个网络爬虫。出于抓取目的,我不需要加载图像。当页面被加载时,Webkit 会产生很多 UrlLoader 线程。所以我认为最好禁用图像,这样我会节省很多
这个问题在这里已经有了答案: Android webview launches browser when calling loadurl (11 个答案) 关闭 7 年前。 我花了两天的时间来寻找一
我正在加载一个网页,我想使用基本身份验证登录,我有使用 Swift 的经验并且能够像下面那样执行基本身份验证,但我无法为我的应用程序的 Flutter 版本实现基本身份验证。 ---- swift 代
我用 webview 创建了应用程序,我想在 webview 中加载所有内部链接并在 android 浏览器中加载外部链接。现在的问题是我正在使用 html 广告,当我点击广告时我想打开外部浏览器,但
我需要在父背景图案上显示我的 webview 内容。有没有直接的方法来做到这一点? 最佳答案 这可能有用 final com.sun.webkit.WebPage webPage = com.sun.
是否可以从 webview 中加载的页面读取 http 请求和响应数据。我想要做的是在用户单击 webview 中页面内的链接后从响应中获取二进制数据。任何帮助或线索将不胜感激 最佳答案 创建您自己的
我有一个简单的WebView在 Android 上运行 Web 应用程序。问题是当我旋转手机以将其更改为横向 webview重新加载并回到开头。 我怎样才能防止这种行为? 罗恩 最佳答案 从 Andr
我创建了一个带有 webview 标签的自定义浏览器。当我在 google.it(或 google.com)中导航时,有时会出现一条消息说 chrome 已过时。我的应用版本是: Node.js 8.
我正在使用 Electron 创建简单的网络浏览器。我的用例是我需要通过不同/各自的代理 IP 路由每个 URL。如果用户输入 google.com,则必须通过 123.123.122.1:8081
我是一名优秀的程序员,十分优秀!