在某些Web浏览器中,巨大的图像会自动调整大小以适应屏幕.
是否可以在Android WebView中执行相同的操作?
网页只包含图片,也许添加一些JavaScript可以做到这一点?
有人已经这样做了吗?
注意:我事先并不知道图像的大小.
通过配置更改字体大小显示设置时,我遇到了一些Android设备的问题.
在网络浏览器中,我的应用很简单,忽略了这一点 对于其他一些手机也是如此.
但是对于某些特定的手机(如摩托罗拉G或X),更改此配置也会影响我的Phonegap应用程序.
我不知道如何避免这种情况使应用程序看起来一致
我正在尝试使这些微型android应用程序之一,什么都不做,只在webview对象而不是浏览器中显示网站,到目前为止,它已加载目标网页,但文本和图像大小都比查看该页面时大得多在实际的设备浏览器中。在浏览器中,页面看起来正确,但在我的应用程序中却不正确。
检查桌面镶边中的页面,可以发现css正在使用6mm字体。
当我包含一个视口元标记时,它对我的应用程序没有任何作用,但会导致浏览器将页面呈现得更接近于Webview对象的显示方式:东西看起来太大了。
是否有快速解决方案(例如,对Webview对象或Websettings对象的视口标签设置或api调用),或者我需要重新设计CSS,也许不使用“ em”吗?顺便说一句,我没有写网页或CSS。
谢谢。
PS:顺便说一句,我要访问的页面在这里:deltabingo.com/delta-bingo-mobile
有时,当我加载页面时(没有静态内容,即时构建)我看到字体太小了1.如果我重装,我会看到它2.我来回走看看吧.然后......小.不是特定页面,不是特定时间.甚至没有特定版本:我在ICS设备上部署,没问题,然后改变一些东西(比如字体大小),这就是问题所在.对于8和10个仿真器的部署也是如此.
我的观点很简单:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webviewArticle"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:padding="12dp" >
</WebView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
HTML构造(内容参数格式为html)
String toShow = new StringBuffer()
.append("<html>")
.append("<head>")
.append("<style type='text/css'>body{ font-size: large; color: #FFFFFF; background-color: #000000;}</style>")
.append("</head>")
.append(String.format(
"<body><h1>%s</h1><div><img src='%s' alt='%s' style='width:100%%; height:auto' /></div><div style='background-color:#000000;'>%s</div><div><h3>%s</h3></div></body>",
article.getTitle(),
article.getImageLink().toString(),
article.getTitle(),
article.getContent().replace("%", "%25"), //html
article.getAuthor()))
.append("</html>")
.toString();
mBrowser.getSettings().setBuiltInZoomControls(true);
mBrowser.setInitialScale(1);
CompatibilityUtils.setLoadWithOverviewMode(mBrowser, true); //set based on android version
mBrowser.getSettings().setUseWideViewPort(true);
mBrowser.loadDataWithBaseURL("fake://in/order/to/refresh", toShow, "text/html", "utf-8",null);
Run Code Online (Sandbox Code Playgroud)
任何提示?
附加说明12/09/25:如图所示,WebView认为可用空间是屏幕的一半,并相应地放置文本.这很奇怪.什么是最奇怪的是,它认为文本(图像上方的标题和下面的div)而不是图像!
早上好,我有一个专为智能手机和平板电脑设计的应用程序.当它在平板电脑上运行时,我想缩放我的webview文本,以便用户可以更好地阅读文本并填写所有空白区域(如果可能).
这是我用来做这个技巧的代码:
//Webview Zoom
if( UIUtils.isTablet(getActivity())) {
if(UIUtils.isICS()) {
webView.getSettings().setTextZoom(130);
} else {
int currentTextSizeIndex = lyricsView.getSettings().getTextSize().ordinal();
if ( currentTextSizeIndex+1 < lyricsView.getSettings().getTextSize().values().length )
webView.getSettings().setTextSize( lyricsView.getSettings().getTextSize().values()[currentTextSizeIndex+1] );
}
}
Run Code Online (Sandbox Code Playgroud)
所以我检查一下我是否在平板电脑上并检查用户正在使用哪个操作系统版本.事实上,从API Level 14我可以使用setTextZoom,它允许我以百分比(默认为100)设置页面的文本缩放.这个解决方案的可扩展性要高得多,因为我可以为用户提供按步骤+10或-10%增加或减少文本的能力.
在API级别14之前,我必须使用使用枚举作为参数的setTextSize(默认为NORMAL).TextSize是Enum,用于指定文本大小.SMALLEST是50%SMALLER是75%NORMAL是100%LARGER是150%LARGEST是200%
所以我只能使用这5个costants并且它不是那么可扩展(但它是将这个功能提供给没有ICS的90%手机的唯一方法:D).
问题是,webView.getSettings().setTextSize(TextSize.LARGER);当我在不同的平板电脑上显示文本视图时,以不同的方式行动,这真的不合适.
目前我正在测试三星Galaxy Tab和Kindle Fire.这些是GSMArena的技术规范:
显示
型TFT电容式触摸屏,16M色
尺寸 600 x 1024像素,7.0英寸(约170 ppi像素密度)
显示
型IPS TFT电容式触摸屏,16M色
尺寸 1024 x 600像素,7.0英寸(~170 ppi像素密度)
如您所见,它们具有相同的分辨率,英寸和ppi!现在,我将向您展示这些设备的2个截图(相同的webview内容),以便您了解我正在谈论的内容.
KindleFire: 
Galaxy Tab: 
在带有textSize LARGE的Galaxy Tab上,文本太大了,看起来很难看.因此,对于那种设备,最好在默认情况下显示NORMAL文本(并且让用户选择是否将其放大).但是我怎么知道哪个是最好的默认textSize来展示?因为NORMAL对于Galaxy Tab来说是好的,而对于Kindle Fire而言太小了,LARGE对于galaxy tab来说太大了,但对Kindle来说却是完美的.我只是在这两个设备上进行测试,但是我要支持所有平板电脑我要找到某种参数,设备中的差异才能说:好在这台设备上,因为分辨率很小我会放大/正常,而不是这个,因为它更大的结果我可以把它更大(种类).
你有没遇到过这个问题?我该如何解决?