###前提・実現したいこと
WebViewを使って外部のHPを表示しようとしたときに、ページによっては実際の画面より大きく表示され、スクロールしないとページ全体が見えないことがあります。
一方、同じURLを
Device.OpenUri()
を使って表示したときにはちょうど横幅が収まるようにスケーリングされています。
WebViewを使ったときもDevice.OpenUri()を使ったときと同じ大きさで表示させたいたいと思っています。
アドバイスお願いします。
###発生している問題・エラーメッセージ
表示上の問題で特にエラーがでているわけではありません。
###該当のソースコード
[MainPage.cs] using System; using Xamarin.Forms; namespace WebViewTest { public class MainPage : ContentPage { public MainPage() { var url = "http://kyushujangara.co.jp"; // Device.OpenUri var button1 = new Button { Text = "button1", }; button1.Clicked += (sender, e) => { Device.OpenUri(new Uri(url)); }; // WebView var button2 = new Button { Text = "button2", }; button2.Clicked += (sender, e) => { Navigation.PushAsync(new WebPage(url, (int)Width, (int)Height), true); }; Content = new StackLayout { Children = { button1, button2, } }; } } } [WebPage.cs] using System; using System.Diagnostics; using Xamarin.Forms; namespace WebViewTest { public class WebPage : ContentPage { public WebPage(string url, int w, int h) { var webView = new WebView { Source = url, // WidthRequest = 640, // HeightRequest = 960, }; #if false var baseLayout = new AbsoluteLayout(); var layout = new AbsoluteLayout() { WidthRequest = 640, HeightRequest = 960, }; SizeChanged += (sender, e) => { // ここが最後に実行される Debug.WriteLine("0 : " + Width + " X " + Height); layout.AnchorX = 0; layout.AnchorY = 0; layout.Scale = Width / layout.Width; }; webView.SizeChanged += (sender, e) => { Debug.WriteLine("W : " + webView.Width + " x " + webView.Height); }; layout.SizeChanged += (sender, e) => { Debug.WriteLine("L : " + layout.Width + " x " + layout.Height); }; baseLayout.SizeChanged += (sender, e) => { Debug.WriteLine("B : " + baseLayout.Width + " x " + baseLayout.Height); }; layout.Children.Add(webView); baseLayout.Children.Add(layout); Content = baseLayout; #else Content = webView; #endif } } }
###試したこと
AnchorX,AnchorY,Scaleをいじれば、それっぽくなることは試したのですが、実際のページのサイズの取得の仕方がわからず、最適の値を求めることができません。
上記のソースの[WebPage.cs]の中の#if false 〜 #endifの部分はこちらの考えを元にやってみたのですが、こちらも期待したスケールにはなりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Xamarin 6.2(build 1829)
Mac Note Pro
OS X Yosemite(10.10.5)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/21 08:54
2017/04/23 12:04
2017/04/24 02:52
2017/04/24 08:25