Ширина Android WebView - PullRequest
       2

Ширина Android WebView

0 голосов
/ 27 декабря 2011

Я пытаюсь контролировать масштаб ширины WebView. Проведя около двух полных дней. Я все еще остался, где я начал. Я следовал за следующей документацией: http://developer.android.com/guide/webapps/targeting.html http://developer.android.com/guide/practices/screens_support.html

Я экспериментировал с метатегами css, WebView.setInitialScale. Иногда изменения заставляют WebView вырезать середину экрана, иногда одну треть. Когда вы думаете, что нашли безумный шаблон в безумии, вы обнаруживаете, что ответ макета является абсолютно случайным. Кто-нибудь знает, есть ли способ реализации встроенных веб-страниц HTML5 на платформе Android или это просто то, к чему еще не готова платформа Android?

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Я не уверен, где именно вы ошиблись, но вот примерный код, который я использую для тестирования моих встроенных WebView. Я должен отметить, что я в основном нацеливаюсь на Honeycomb (3.x), но вы не указали так:

Вот простой пример макета:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/FrameLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</FrameLayout>

Теперь вот код для поддержки деятельности:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.ConsoleMessage;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.FrameLayout;
import android.widget.Toast;

public class WebViewTestActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

    final String TAG = "webview test";

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);     

    FrameLayout vg = (FrameLayout) findViewById(R.id.FrameLayout1);
    WebView webView = new WebView(this);

    vg.removeAllViews();
    vg.addView(webView);

    WebSettings settings = webView.getSettings();           
    settings.setSupportZoom(false);
    settings.setJavaScriptEnabled(true);

    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onConsoleMessage(ConsoleMessage cm) {

            Log.i(TAG, cm.messageLevel() + ": " + cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId() );

            return true;
        }
    });

    webView.addJavascriptInterface(new Object() {

        @SuppressWarnings("unused")
        public void foo() {
            Log.i(TAG, "----- FOO CALLED -----");
            Toast.makeText(WebViewTestActivity.this, "foo called", Toast.LENGTH_LONG).show();
        }

    }, "android");

    String html = "<!DOCTYPE html><html><body style=\"background:black;color:white;padding:20px;\"><a href=\"javascript:android.foo()\">CLICK ME!</a><div><label>HTML5 number input: <input type=number /></label></div></body></html>";
    webView.loadDataWithBaseURL("http://yourOptionalBaseUrl.com/", html, "text/html", "utf-8", null);   
}        
}

... и это все, что вам нужно, чтобы иметь встроенную страницу html5. Вы также можете поместить свою html-страницу в папку «assets» и загрузить ее, используя:

webView.loadUrl("file:///android_asset/page.html");

или встраивать только один ресурс, такой как

или просто укажите его на своем сервере, используя тот же синтаксис URL загрузки, что и до

webView.loadUrl("http://www.yourpage.com/android?param=custom");

... надеюсь, это поможет ...

0 голосов
/ 28 декабря 2011

Я пришел к выводу, что единственный способ изменить ширину WebView - это использовать target-densitydpi, найденный в метатеге html. Установив target-densitydpi в ширину моего устройства, я получаю веб-страницу, чтобы охватить всю ширину экрана. Создав html-файл во время выполнения, я могу заполнить target-densitydpi определенной шириной устройства. Хлоп !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...