سؤال

أحاول الحصول على WebView للحصول على سلوك مماثل كمتصفح Android. يفتح المتصفح جميع الصفحات بطريقة تحاول تناسب عرضها على الشاشة. ومع ذلك ، فإن السلوك الافتراضي لمرض الويب هو البدء بمقياس بنسبة 100 ٪ بكسل ، لذا يبدأ التكبير في الزاوية العلوية اليسرى.

لقد أمضيت الساعات القليلة الماضية في محاولة لإيجاد طريقة للحصول على WebView لتوسيع نطاق الصفحة على الشاشة كما هو الحال في المتصفح ، لكنني لا أحصل على أي حظ. هل وجد أي شخص طريقة لإنجاز هذا؟

أرى هو إعداد يسمى setloadwithoverviewmode ، لكن هذا لا يبدو أنه يفعل أي شيء على الإطلاق. لقد جربت أيضًا setInitialScale ولكن على أحجام شاشة مختلفة وأحجام صفحات الويب التي لن تكون رشيقة مثل تحجيم المتصفحات.

أي شخص لديه أي خيوط؟

شكرًا

تحرير: يبدو أن طريقة براين تعمل عندما يكون الهاتف في المناظر الطبيعية ولكن ليس في صورة. في الصورة ، إنها قريبة لكنها لا تزال لا تناسب الشاشة بأكملها في الصفحة. أبدأ هذا المكافأة بالأمل في أن هناك طريقة مؤكدة لإطلاق النار للحصول على التكبير الأولي لتناسب الصفحة بعرض الصفحة في أي اتجاه أو حجم الشاشة.

هل كانت مفيدة؟

المحلول

يقوم الرمز التالي بتحميل إصدار سطح المكتب من صفحة Google Homepage بالكامل لتناسب داخل webview بالنسبة لي في Android 2.2 على شاشة 854 × 480 بكسل. عندما أقوم بإعادة توجيه الجهاز ويعيد تحميله في صورة أو مشهد ، فإن عرض الصفحة يناسب تمامًا في كل مرة.

BrowserLayout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

     <WebView android:id="@+id/webview"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent" />
</LinearLayout>

المستعرض. جافا:

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class Browser extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.BrowserLayout);

        String loadUrl = "http://www.google.com/webhp?hl=en&output=html";

        // initialize the browser object
        WebView browser = (WebView) findViewById(R.id.webview);

        browser.getSettings().setLoadWithOverviewMode(true);
        browser.getSettings().setUseWideViewPort(true);

        try {
            // load the url
            browser.loadUrl(loadUrl);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

نصائح أخرى

لقد اكتشفت لماذا لم يكن عرض الصورة ملء منفذ العرض تمامًا. على الأقل في حالتي ، كان ذلك لأن شريط التمرير كان يظهر دائمًا. بالإضافة إلى رمز منفذ العرض أعلاه ، حاول إضافة هذا:

    browser.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    browser.setScrollbarFadingEnabled(false);

يؤدي هذا إلى عدم تناول شريط التمرير مساحة تخطيط ، ويسمح لصفحة الويب بملء منفذ العرض.

أتمنى أن يساعدك هذا

إنه والسؤال القديم ولكن اسمحوا لي أن أضيف تفاصيل فقط في حالة وصول المزيد من الأشخاص مثلي إلى هنا.

الإجابة الممتازة التي نشرها براين لا تعمل بالنسبة لي في Jelly Bean. لا بد لي من إضافة:

browser.setInitialScale(30);

يمكن أن تكون المعلمة أي نسبة مئوية تنجز أن المحتوى المُقيّز أصغر من عرض WebView. ثم يقوم SetUsewideViewPort (True) بتوسيع عرض المحتوى إلى أقصى عرض عرض WebView.

محاولة باستخدام منفذ عرض واسع:

 webview.getSettings().setUseWideViewPort(true);

// للصور ومقاطع الفيديو SWF ، استخدم العرض كـ "100 ٪" والارتفاع كـ "98 ٪"

mWebView2.getSettings().setJavaScriptEnabled(true);
mWebView2.getSettings().setLoadWithOverviewMode(true);
mWebView2.getSettings().setUseWideViewPort(true);
mWebView2.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView2.setScrollbarFadingEnabled(true);

أنا أعمل مع تحميل الصور لهذه الإجابة وأريد أن يتم تحجيمها على عرض الجهاز. أجد أنه بالنسبة للهواتف القديمة التي تحتوي على إصدارات أقل من API 19 (KitKat) ، فإن سلوك إجابة براين ليس تمامًا كما يعجبني. إنه يضع الكثير من المسافة البيضاء حول بعض الصور على الهواتف القديمة ، ولكنه يعمل على أحدث الصور. هذا هو البديل الخاص بي ، بمساعدة من هذه الإجابة: هل يمكن لفيلم ويب أندرويد تغيير حجم الصور الضخمة تلقائيًا؟ خوارزمية التصميم SINGLE_COLUMN تم إهماله ، لكنه يعمل وأشعر أنه مناسب للعمل مع مشاهد الويب القديمة.

WebSettings settings = webView.getSettings();

// Image set to width of device. (Must be done differently for API < 19 (kitkat))
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
    if (!settings.getLayoutAlgorithm().equals(WebSettings.LayoutAlgorithm.SINGLE_COLUMN))
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
} else {
    if (!settings.getLoadWithOverviewMode()) settings.setLoadWithOverviewMode(true);
    if (!settings.getUseWideViewPort()) settings.setUseWideViewPort(true);
}

إذا كان لديك طريقة عرض الويب التي تم اكتشافها ولكن صورك لا تزال خارج الحجم ، فإن الحل الأفضل الذي وجدته (هنا) كان ببساطة إعداد المستند مع:

<style>img{display: inline; height: auto; max-width: 100%;}</style>

نتيجة لذلك ، يتم تحجيم جميع الصور لتتناسب مع عرض عرض الويب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top