2015-07-23 5 views
5

Ich habe Web-Seite in der Core-Bibliothek als Ansicht definiert gesamten Bildschirm ausfüllen:Resize definiert in Xamarin.Forms Core-Bibliothek auf dem Bildschirm drehen Ereignis

Content = new WebView 
{ 
    VerticalOptions = LayoutOptions.FillAndExpand, 
    HorizontalOptions = LayoutOptions.FillAndExpand, 
    Source = "https://google.com", 
}; 

Leider auf dem Bildschirm drehen es nicht geändert hat (siehe unten):

enter image description here enter image description here

Wie kann ich sicherstellen, dass Bildschirm auf dem Bildschirm Rotation der Größe verändert wird.

+0

Welche Plattform sind Sie läuft und Prüfung auf? Haben Sie auf anderen Plattformen versucht, zu sehen, ob sie das gleiche Verhalten zeigen? Diese Fragen helfen uns dabei, es auf ein Problem der Plattformimplementierung im Vergleich zu einem Kernproblem der Implementierung zu beschränken. –

Antwort

5

Wenn es ist iOS, dann machen Sie eine benutzerdefinierte WebView Renderer (http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/):

protected override void OnElementChanged (VisualElementChangedEventArgs e) 
{ 
    base.OnElementChanged(e); 

    AutoresizingMask = UIViewAutoresizing.FlexibleDimensions; 
    ScalesPageToFit = true; 
} 

public override void LayoutSubviews() 
{ 
    base.LayoutSubviews(); 

    NativeView.Bounds = UIKit.UIScreen.MainScreen.Bounds; 
} 
+0

nicht nur für iOS, brauchen für Android und Windows Phone. Und Code-Lib-Lösungen? Kann ich die Bildschirmdrehung dort handhaben? –

+0

Haben Sie auf anderen Plattformen genau das gleiche Problem?Kannst du ein paar Screenshots geben? Ich bin mir ziemlich sicher, dass der Screenshot von iOS stammt (schwarzes Rechteck). Wenn Sie den Renderer für die iOS-Version verwenden, sind Android und Windows nicht betroffen. –

2

Sie müssen sich mit Webansicht zu arbeiten Xamarin.forms verwenden.

Working with WebView in Xamarin.Forms

xamarin-forms-samples/WorkingWithWebview Hat Beispiele für jede Plattform.

Dieser Link auf Handling Rotation gibt Ihnen alle Details, die Sie für Android benötigen. Die andere Antwort hat iOS abgedeckt.

Responding To Orientation Changes In Xamarin Forms ein weiterer großer Link

Customizing Controls for Each Platform diese Prämisse verwenden Sie die Bildschirm-Rotation für jede Plattform einzeln innerhalb der einen App verwalten.

Handling Runtime Changes zeigt, wie die Bildschirmdrehung zu verwalten ist. Sie müssen die Seite nach unten scrollen.

Ein guter Link zum Verwalten von Windows-Telefon, The two ways to handle orientation in your Windows 8.1 app.

Ein weiterer nützlicher Link Fix IE 10 on Windows Phone 8 Viewport.

Dies ist ein interessanter Link auf Managing screen orientation von Mozilla. Es ist experimentell, aber interessant.

0

ich den benutzerdefinierten Renderer implementiert und hinzugefügt, um die Zeile "webView.AutoresizingMask = UIViewAutoresizing.FlexibleDimensions;" aber es funktioniert nicht für mich. Dann löste ich dies mit einer nicht so eleganten Lösung (Neuladen der WebView-Komponente, wenn sich die Ausrichtung des Geräts ändert).

In meiner XAML:

<StackLayout Padding="0" > 
     <WebView x:Name="viewJupyter" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" /> 
    </StackLayout> 

Und mein Code hinter Klasse:

public partial class ServiceChart : ContentPage 
{ 
    private int _rotateView; 
    public ServiceChart(string title, string url) 
    { 
     Title = title; 
     InitializeComponent(); 

     var urlPage = new UrlWebViewSource 
     { 
      Url = url 
     }; 
     viewJupyter.Source = urlPage; 

     if (Device.OS == TargetPlatform.iOS) 
     { 
      SizeChanged += (sender, arg) => 
      { 
       if (_rotateView != 0) 
       { 
        var lalala = viewJupyter; 
        InitializeComponent(); 
        viewJupyter.Source = (lalala.Source as UrlWebViewSource).Url; 
       } 
       _rotateView++; 
      }; 
     } 
    } 
} 
Verwandte Themen