2014-06-08 18 views
8

Qual è il modo proposto di aggiungere lo spazio ai formati in Xamarin.Forms?Aggiunta di spazio nei layout Xamarin.Forms?

Un modo potrebbe essere quello di aggiungere una cornice senza figli in questo modo:

new Frame { 
    BackgroundColor = Color.White, 
    HeightRequest = 1, 
    MinimumHeightRequest = 1, 
    HasShadow = false 
} 

Purtroppo, HeightRequest e MinimumHeightRequest vengono ignorati.

Esiste un modo migliore?

risposta

9

Si potrebbe mettere i controlli all'interno layout (come cornice, vista di scorrimento, pannello stack) e utilizzare la proprietà Imbottitura:

 this.stackPanel = new StackLayout() 
     { 
      Padding = new Thickness (8, 8) 
     }; 

     var scrollView = new ScrollView() 
     { 
      Content = stackPanel, 
      Padding = new Thickness (1, 2, 3, 4) 
     }; 

     var frame = new Frame() 
     { 
      Padding = new Thickness (8) 
     }; 

Se volete spazio tra due pulsanti per esempio, credo che questo sarebbe fare il trucco . Il primo aggiunge 10 di padding inferiore, il secondo aggiunge 10 all'inizio imbottitura totale di 20.

 var frame1 = new Frame() 
     { 
      Padding = new Thickness (0,0,0,10), 
      Content = new Button() 
     }; 

     var frame2 = new Frame() 
     { 
      Padding = new Thickness (0,10,0,0), 
      Content = new Button() 
     }; 
6

più Xamarin.Forms Layout supporta l'aggiunta di spazio tra gli elementi:

  • StackLayout ha una struttura Spacing,
  • Grid ha RowSpacing e ColumnSpacing proprietà,
  • ...

Ora, se si desidera aggiungere la spaziatura in un luogo particolare, il modo di esso è quello di includere un BoxView:

myStackLayout.Children.Add (new BoxView {Color = Color.Transparent, HeightRequest = 5}); 

Si può anche avvolgere i contenuti in un Frame o ContentView, ma aggiunge imbottitura al contenuto invece di aggiungere spazio (anche se l'effetto sarà lo stesso).

1

Prova:

myFrame.TranslateX=10; 
myFrame.TranslateY=10; 
2

Quello che ha funzionato perfettamente per me:

Si supponga di voler distribuire 2 etichette in modo uniforme su una stackLayout orizzontale:

new StackLayout 
{ 
    Orientation = StackOrientation.Horizontal, 
    HorizontalOptions=LayoutOptions.CenterAndExpand, 
    Spacing = 0, // <- Very important!! 
    Children = { 
     new Label { Text = "Label 1" }, 
     new BoxView { HorizontalOptions = LayoutOptions.FillAndExpand }, // <- the clever part 
     new Label { Text = "Label 2" } 
    } 
}; 

Sommario

Inserendo BoxViews che f malato lo spazio rimanente ("FillAndExpand") tra le tue visualizzazioni, le tue visualizzazioni appaiono equamente distribuite. Impostando Spacing = 0, non si ottiene spazio aggiuntivo tra le visualizzazioni.

Problemi correlati