在某些Web浏览器中,巨大的图像会自动调整大小以适应屏幕.
是否可以在Android WebView中执行相同的操作?
网页只包含图片,也许添加一些JavaScript可以做到这一点?
有人已经这样做了吗?
注意:我事先并不知道图像的大小.
简单的问题.
我正在尝试拉伸webview的内容,以便可以看到整个网页.即没有滚动.我查看了文档,但无法找到缩放控件和setinitialscale之外的任何方法.
在这种情况下,setinitialscale的问题在于它对不同站点的工作方式不同.
示例:1:维基百科将按预期加载,缩放范围足够远.2:谷歌只会显示页面的中心.
下面是我的代码片段
test1 = (WebView) findViewById(R.id.webview_test_1);
test2 = (WebView) findViewById(R.id.webview_test_2);
test3 = (WebView) findViewById(R.id.webview_test_3);
test1.getSettings().setJavaScriptEnabled(true);
test2.getSettings().setJavaScriptEnabled(true);
test3.getSettings().setJavaScriptEnabled(true);
test1.setInitialScale(12);
test2.setInitialScale(12);
test3.setInitialScale(12);
test1.loadUrl("http://developer.android.com/resources/tutorials/views/hello-tablelayout.html");
test2.loadUrl("http://www.wikipedia.org/");
test3.loadUrl("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)
test1.getSettings().setDefaultZoom(ZoomDensity.FAR);
Run Code Online (Sandbox Code Playgroud)
这似乎是我正在尝试做的一种替代方案,但我不能让它放大到足够远.
我的布局中有一个webview.默认情况下,会在其中打开搜索表单.在搜索时,搜索表单下方会显示一个列表部分.如果单击列表中的任何链接,则会打开详细信息页面.现在我想控制webview的后退导航.我将此代码放在Activity中.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d("TYPE", TYPE);
WebView myWebView = null;
if (TYPE.equalsIgnoreCase("REPORT_ACTIVITY"))
myWebView = reportView;
if (TYPE.equalsIgnoreCase("FEEDBACK_ACTIVITY"))
myWebView = feedbackView;
if (myWebView != null)
// Check if the key event was the Back button and if there's history
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
// If it wasn't the Back key or there's no web page history, bubble up
// to the default
// system behavior (probably exit the activity) …Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式将WebView滚动到DOM树中特定元素的位置.但到目前为止,我还没有能够让WebView响应滚动请求.我试过调用使用的JavaScript window.scrollTo(...),但WebView没有响应.在Java方面,我试过调用该WebView.flingScroll(...)方法.WebView会响应flingScroll,但我需要的是一种scrollTo(...)功能.有任何想法吗?
我有一个用Java实现的javascript接口,由我在webview中加载的javascript代码调用.
JS Inside webview:
Android.myFunction(function(data){
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
Java的:
public class JavaScriptInterface {
Context context;
WebView webView;
JavaScriptInterface(Context c, WebView w) {
context = c;
webView = w;
}
public void myFunction(String callback) {
//when I log callback, it is "undefined"
String someData = "Yay for data";
String js =
"javascript:(function() { "
+ "var callback = " + callback + ";"
+ "callback('" + someData + "');"
+ "})()";
webView.loadUrl(js);
}
}
Run Code Online (Sandbox Code Playgroud)
由webview加载的字符串最终为:
javascript:(function() {var callback = undefined; undefined();})()
Run Code Online (Sandbox Code Playgroud)
我有一些想法: …
我有一个包含webview的Android应用程序.它需要允许用户在网页上填写表单,然后在用户单击表单后更改表单的数据submit.表单将使用POST请求方法.
所以我的问题是,如何从表单中截取POST数据,更改它的值,然后发送它?
例如:如果有这样的Web表单......
<form action="http://www.example.com/do.php" method="post">
<input type="text" name="name" />
<input type="text" name="email" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
如果用户在表单中输入name = Steve和email = steve@steve.com,我想在android应用程序中将值更改为name = bob和email = bob@bob.com并将新POST发送给http://www.example.com/do.php.
谢谢你的帮助!
我必须将WebView放入ScrollView.但是我必须在webview之前将一些视图放到同一个scrollview中.所以它看起来像这样:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:id="@+id/articleDetailPageContentLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/articleDetailRubricLine"
android:layout_width="fill_parent"
android:layout_height="3dip"
android:background="@color/fashion"/>
<ImageView
android:id="@+id/articleDetailImageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitStart"
android:src="@drawable/article_detail_image_test"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:text="PUBLISH DATE"/>
<WebView
android:id="@+id/articleDetailContentView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/fashion"
android:isScrollContainer="false"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我从后端获得了一些HTML信息.它没有任何身体或头部标签,只有被<p>或<h4>或其他标签包围的数据.它还有<img>标签.有时图片对于当前屏幕宽度来说太宽.所以我在HTML的开头添加了一些CSS.所以我将数据加载到webview,如下所示:
private final static String WEBVIEW_MIME_TYPE = "text/html";
private final static String WEBVIEW_ENCODING = "utf-8";
String viewport = "<head><meta name=\"viewport\" content=\"target-densitydpi=device-dpi\" /></head>";
String css = "<style type=\"text/css\">" +
"img {width: 100%;}" +
"</style>";
articleContent.loadDataWithBaseURL("http://", viewport + css + articleDetail.getContent(), …Run Code Online (Sandbox Code Playgroud) 我只是想在Android上的WebView上实现facebook登录.问题是我单击HTML页面上的facebook按钮并在Facebook对话框中插入用户名和密码.网址重定向只是给了我一个黑页.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webview = new WebView(this);
webview.setWebChromeClient(new WebChromeClient());
webview.getSettings().setPluginState(PluginState.ON);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.setWebViewClient(new WebViewClient());
webview.loadUrl("http://peoplehunt.crowdscanner.com/hunt");
setContentView(webview);
Run Code Online (Sandbox Code Playgroud)
这是我的HTML页面上的Facebook常规JavaScript API,当点击facebook按钮时会调用此函数.
$("#login_facebook").click(function() {
FB.login(function(response) {
//This function should be called
if (response.authResponse) {
FB.api('/me?fields=name,email,picture,id&type=large', function(response) {
//console.log("email "+response.email);
$("#submitHandle").hide();
$("#loader").show();
//console.log('Good to see you, ' + response.picture + '.');
var theUsername = response.name;
theUsername = theUsername.replace(/ /g, '_')+"_"+response.id+"@meetforeal.com";
//console.log(theUsername);
$("input[name=email]").val(encodeURIComponent(response.email));
$("input[name=lastName]").val(encodeURIComponent(response.name));
$("input[name=avatarImage]").val(response.picture);
$("input[name=userName]").val(encodeURIComponent(theUsername));
$("#msg_twitter").fadeIn("slow");
$("#submitHandle").show();
$("#loader").hide();
$("#user").attr("action","/crowdmodule/auth/registerattendeefacebook");
$("#user").submit();
});
} else {
//console.log('User cancelled login or …Run Code Online (Sandbox Code Playgroud) 在使用WebView时,我们通常会为其添加一个URL:
WebView.loadUrl(myURL);
Run Code Online (Sandbox Code Playgroud)
但是可以直接放入HTML代码吗?因此它将符合以下逻辑:
WebView.loadContent ( <html><head><script></script></head><body>....</body></html> );
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个Android webview加载一个wordpress博客.一些博客文章包含youtube视频,我希望用户可以根据需要全屏显示.问题是HTML5全屏按钮在单击时不执行任何操作但冻结视图.有任何想法吗?