2015-08-06 11 views
6

Xamarin.Forms kullanıyorum ve iOS ve Android hedefliyor.Klavye açıldığında arka plan görüntüsünün sıkışması nasıl önlenir?

Standart görünüşüdür without keyboard

Klavye açılır ve arka plan görüntüsü yatay modda hem de Landscape

XAML

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="XilnexOTM.Views.LoginPage" 
      BackgroundImage="bg1.png" > 
    <ScrollView> 
     <StackLayout Orientation="Vertical"> 
      <Label Text="PICTURE" /> 
      <Label Text="PIC 2" /> 

      <Entry Placeholder="Username" /> 
      <Entry Placeholder="Password" IsPassword="true"/> 

      <Button x:Name="btn_Login" 
        Text="Login" 
        BackgroundColor="#FF0000"/> 

     </StackLayout> 
    </ScrollView> 
</ContentPage> 
sıkılmış keyboard opened

Arka plan görüntüsü sıkılmış


CSS konseptini Xamarin.Forms'a uygulayarak olası bir yolu var mı? Eğer boy oranı kontrol edemez ContentPage.BackgroundImage ile

xx { 
background-size: cover; 
background-position: right bottom; 
} 

cevap

16

. Bunun yerine AbsoluteLayout ile kombine Image kullanmak (ve Image ait Aspect özelliğini ayarlayın): Eğer AdjustPan veya AdjustResize kullanabileceğiniz MainActivity İçinde

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="XilnexOTM.Views.LoginPage"> 

    <AbsoluteLayout VerticalOptions="FillAndExpand" 
        HorizontalOptions="FillAndExpand"> 

     <Image AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0, 0, 1, 1" 
      Source="bg1.png" Aspect="AspectFill"/> 

     <ScrollView AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0, 0, 1, 1"> 
      <StackLayout Orientation="Vertical"> 
       <Label Text="PICTURE" /> 
       <Label Text="PIC 2" /> 

       <Entry Placeholder="Username" /> 
       <Entry Placeholder="Password" IsPassword="true"/> 

       <Button x:Name="btn_Login" 
         Text="Login" 
         BackgroundColor="#FF0000"/> 
      </StackLayout> 
     </ScrollView>     

    </AbsoluteLayout>    
</ContentPage> 
+0

Ya da sadece 'AbsoluteLayout' yerine 'Grid 'kullanın. Bu ekstra özelliklere sahip olmaya gerek yok – mr5

+0

Harika cevap! ContentPage'in BackgroundImage özelliği, ek parametreler eklemeyi desteklemiyor. Ayrıca ContentPage'in BackgroundImage özelliğinin değiştirilmesi, bir nedenden dolayı VS'yi (community Mac) kilitler. – Willempie

2

: Ben koduna göre yapmayı tercih ederim

[Activity(WindowSoftInputMode = SoftInput.AdjustPan)] 
public class MyActivity : Activity 
{ 
    ..... 
} 
0

, burada benim çözümdür:

hep App.xaml böyle benim Cihaz Ekranı vardır:

public static double ScreenWidth { get; set; } 
    public static double ScreenHeight { get; set; } 

Sonra Android Ana Faaliyeti:

 Passapp.App.ScreenWidth = (double)(Resources.DisplayMetrics.WidthPixels/Resources.DisplayMetrics.Density); 
     Passapp.App.ScreenHeight = (double)(Resources.DisplayMetrics.HeightPixels/Resources.DisplayMetrics.Density); 

Ve iOS AppDelegate içinde

:

App.ScreenWidth = UIScreen.MainScreen.Bounds.Width; 
     App.ScreenHeight = UIScreen.MainScreen.Bounds.Height; 

Yani Sen Ekran Genişlik ve Yükseklik size ne olursa olsun sayfa yapabilirsiniz varken: