2016-12-20 6 views
0

У меня есть необходимость вставить фон в сетку, которая подходит только в соответствии с размером устройства. Я попробовал тысячу комбинаций, но остаюсь маленьким или не подходит всем. На приведенном ниже рисунке вы можете увидеть красное изображение, которое мне нужно адаптировать к сетке, сетке, которая находится во второй половине нижнего экрана.Вставить фоновое изображение в сетку, которая соответствует размеру с формами Xamarin pcl

enter image description here

Я пытаюсь поместить изображение в сетке, изображение имеет х: Name = «BackgroundImage», то, что объект, который я должен адаптироваться ко всей сетке второй половины экран, как я могу это сделать? вот код:

<?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="Fimap.Login" 
      BackgroundColor="#333"> 
    <ContentPage.Padding> 
    <OnPlatform x:TypeArguments="Thickness" 
       iOS="0,0,0,0" 
       Android="0,0,0,0" 
       WinPhone="0,0,0,0" /> 
    </ContentPage.Padding> 
    <ContentPage.Content> 
    <ScrollView> 
     <StackLayout VerticalOptions="Center" HorizontalOptions="CenterAndExpand" Orientation="Vertical" Spacing="0"> 
     <ActivityIndicator x:Name="loadingBeforeLogin" IsVisible="true" Color="#008ECC" IsRunning="true" /> 
     </StackLayout> 
     <RelativeLayout VerticalOptions="Center" HorizontalOptions="CenterAndExpand" x:Name="allContent"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
      <RowDefinition Height="5*"></RowDefinition> 
      <RowDefinition Height="5*"></RowDefinition> 
      </Grid.RowDefinitions> 
      <!-- immagini loghi e scritta login sopra--> 
      <Grid Grid.Row="0" BackgroundColor="#1f2429"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="2*"></ColumnDefinition> 
       <ColumnDefinition Width="6*"></ColumnDefinition> 
       <ColumnDefinition Width="2*"></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions Height="*"> 
       <RowDefinition Height="2*"></RowDefinition> 
       <RowDefinition Height="6*"></RowDefinition> 
      </Grid.RowDefinitions> 
      <Image Aspect="AspectFit" x:Name="logoScritta" Grid.Row="0" Grid.Column="1" Source="Images/fimaLogoLogin.png"></Image> 
      <Image Aspect="AspectFit" x:Name="logo" Grid.Row="1" Grid.Column="1" Source="Images/logo.png"></Image> 
      <Label TextColor="#fff" Grid.Row="2" FontSize="22" Grid.Column="1" Text="Login" /> 
      </Grid> 
      <!-- username e password input e ricorda password -->    
      <Grid Grid.Row="1"> 
      <Image x:Name="backgroundImage"/> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="2*"></ColumnDefinition> 
       <ColumnDefinition Width="6*"></ColumnDefinition> 
       <ColumnDefinition Width="2*"></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="1*"></RowDefinition> 
       <RowDefinition Height="2*"></RowDefinition> 
       <RowDefinition Height="2*"></RowDefinition> 
       <RowDefinition Height="2*"></RowDefinition> 
       <RowDefinition Height="2*"></RowDefinition> 
       <RowDefinition Height="2*"></RowDefinition> 
      </Grid.RowDefinitions> 
      <ActivityIndicator x:Name="loading" Grid.Row="0" Grid.Column="1" IsVisible="false" Color="#008ECC" IsRunning="true" /> 
      <Label TextColor="#2196F3" Grid.Row="1" Grid.Column="1" Text="" /> 
      <Entry TextColor="#2196F3" PlaceholderColor="#A9D6FA" FontSize="24" Grid.Row="1" Grid.Column="1" Placeholder="Username" x:Name="UsernameEntry" Text="" /> 
      <Label TextColor="#2196F3" Grid.Row="2" Grid.Column="1" Text="" /> 
      <Entry TextColor="#2196F3" PlaceholderColor="#A9D6FA" FontSize="24" Grid.Row="2" Grid.Column="1" Placeholder="Password" IsPassword="True" x:Name="PasswordEntry" Text="" /> 
      <Button x:Name="LoginButton" FontSize="22" Grid.Row="3" Grid.Column="1" Text="Accedi" Clicked="Login_OnClicked"/> 
      <Grid Grid.Row="4" Grid.Column="1"> 
       <Grid.RowDefinitions> 
       <RowDefinition Height="1*"></RowDefinition> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="7*"></ColumnDefinition> 
       <ColumnDefinition Width="3*"></ColumnDefinition> 
       </Grid.ColumnDefinitions> 
       <Label TextColor="#2196F3" Text="Ricorda accesso" Grid.Row="0" Grid.Column="0"></Label> 
       <Switch x:Name="switchRememberPassword" Grid.Row="0" Grid.Column="1"></Switch> 
      </Grid> 
      <Label x:Name="recuperaPassword" Grid.Row="5" Grid.Column="1" TextColor="#2196F3" Text="Hai dimenticato la password?" FontSize="12"></Label> 
      </Grid> 
     </Grid> 
     </RelativeLayout> 
    </ScrollView> 
    </ContentPage.Content> 
</ContentPage> 

РЕШЕНИЕ добавить изображение из отделенного кода C# в RelativeLayout с именем относительной

Image backgroundImage = new Image();  
backgroundImage.Source = "loginBackground.png"; 
       backgroundImage.Aspect = Aspect.AspectFill;    

       relative.Children.Add(backgroundImage, 
        Constraint.RelativeToParent((parent) => 
        { 
         backgroundImage.WidthRequest = parent.Width; 
         return 0; 
        }), 
        Constraint.RelativeToParent((parent) => 
        { 
         return parent.Height - backgroundImage.Height; 
        }) 
       ); 
+0

Измените свой вопрос, чтобы обеспечить больше информации, а не создавать одинаковые вопросы те же темы снова и снова. –

+1

Возможный дубликат [центральное изображение внутри релятивирования и выравнивание по нижним формам xamarin] (http://stackoverflow.com/questions/41243604/center-image-inside-relativelayout-and-align-to-bottom-xamarin-forms) –

+0

Есть несколько вопросов друг к другу, с теми же примерами, но с различными просьбами, прежде чем писать законы тщательно, пожалуйста. Я учусь, и мне нужно несколько примеров. –

ответ

0

В проекте IOS перед вызовом конструктора App:

App.ScreenSize = new Size(UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height); 

В App класс в PCL:

public static Размер ScreenSize;

И просто давая размер сетки столбцов и строк, вы должны использовать что-то вроде:

App.ScreenSize.Width * 1, App.ScreenSize.Height * 1 
+0

это решение не для relativelayout, а для полноэкранного –

 Смежные вопросы

  • Нет связанных вопросов^_^