Xamarin: как отобразить небольшую часть веб-страницы в [Android] WebView? - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь отобразить только небольшую часть веб-страницы в Xamarin Android Webkit WebView.Я видел много ответов о том, как это сделать в Android Studio, но я не видел много недавних ответов о том, как это сделать в xamarin для Android.Какой метод вы бы порекомендовали для этой задачи?Я также мог бы согласиться на загрузку WebView и затем прокрутку вниз до определенного раздела страницы.

Вот код, который я использую для создания вкладки и WebView

//Discover new content
[Activity]
//define class discover content
public class SessionsActivity : Activity
{

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.discover);

        //declare webview and tell our code where to find the XAML resource
        WebView discoverWebView = FindViewById<WebView>(Resource.Id.webViewDiscover);

        //set the webview client
        discoverWebView.SetWebViewClient(new WebViewClient());
        //load the subscription url
        discoverWebView.LoadUrl("https://www.bitchute.com/");
        //enable javascript in our webview
        discoverWebView.Settings.JavaScriptEnabled = true;
        //zoom control on?  This should perhaps be disabled for consistency?
        //we will leave it on for now
        discoverWebView.Settings.BuiltInZoomControls = true;
        discoverWebView.Settings.SetSupportZoom(true);
        //scrollbarsdisabled
        // subWebView.ScrollBarStyle = ScrollbarStyles.OutsideOverlay;
        discoverWebView.ScrollbarFadingEnabled = false;


    }
}

спасибо, взаранее!=]

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Вот как я это сделал, @Jason был полезен, но более полный ответ заключается в следующем: эта загрузка загружает duckduckgo.com, а затем скрывает страницу content_home, прокручивая ее до середины:

using Android.Graphics.Drawables;
using Android.OS;
using Android.Support.V4.App;
using Android.Views;
using Android.Webkit;
using Android.Widget;

namespace BottomNavigationViewPager.Fragments
{
    public class TheFragment1 : Fragment
    {
        string _title;
        string _icon;

        protected static WebView _wv;

        public static TheFragment1 NewInstance(string title, string icon) {
            var fragment = new TheFragment1();
            fragment.Arguments = new Bundle();
            fragment.Arguments.PutString("title", title);
            fragment.Arguments.PutString("icon", icon);
            return fragment;
        }

        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            if (Arguments != null)
            {
                if(Arguments.ContainsKey("title"))
                    _title = (string)Arguments.Get("title");

                if (Arguments.ContainsKey("icon"))
                    _icon = (string)Arguments.Get("icon");
            }
        }

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {

            var view = inflater.Inflate(Resource.Layout.TheFragmentLayout1, container, false);

            _wv = view.FindViewById<WebView>(Resource.Id.webView1);

            var _wvc = new MyWebViewClient();




            _wv.SetWebViewClient(_wvc);

            //string _wtf = "header";



            _wv.Settings.JavaScriptEnabled = true;

            _wv.Settings.AllowFileAccess = true;

            _wv.Settings.AllowContentAccess = true;




            //_wvc.OnPageFinished(_wv, _jsHideBannerC);



            _wv.LoadUrl("https://www.duckduckgo.com/");

            return view;
        }

        private class MyWebViewClient : WebViewClient
        {
            public override void OnPageStarted(WebView view, string url, Android.Graphics.Bitmap favicon)
            {
                base.OnPageStarted(view, url, favicon);


            }

            public override void OnPageFinished(WebView view, string url)
            {
                base.OnPageFinished(view, url);


                string _jsHideBanner = "javascript:(function() { " +
                                "document.getElementById('content_homepage').style.display='none'; " + "})()";

                string _jsHideBannerC = "javascript:(function() { " +
                    "document.getElementsByClassName('logo-wrap--home').style.display='none'; " + "})()";

                _wv.LoadUrl(_jsHideBanner);
            }


        }
    }
    }
0 голосов
/ 15 октября 2018

Если вы посмотрите документы Xamarin для WebView , вы увидите, что у него есть метод LoadURL с той же сигнатурой, что и у метода Java.Единственное отличие состоит в том, что в этом случае используется оболочка метода - Xamarin обычно использует оболочку C #, но в противном случае имена методов совпадают, и передаваемый вами аргумент также будет идентичен

discoverWebView.LoadUrl("javascript:(function() { " +
"document.getElementsByTagName('header'[0].style.display="none"; " + 
"})()"); 
...