2014-06-08 6 views
8

Was ist die vorgeschlagene Möglichkeit, Platz zu Layouts in Xamarin.Forms hinzuzufügen?Platz in Xamarin.Forms Layouts hinzufügen?

Eine Möglichkeit wäre, einen Rahmen ohne Kinder hinzuzufügen etwa so:

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

Leider HeightRequest und MinimumHeightRequest ignoriert erhalten.

Gibt es einen besseren Weg?

Antwort

9

Sie könnten innerhalb Layouts setzen Ihre Steuerelemente (wie Rahmen, Scroll-Ansicht, Stapelplatte) und verwenden Padding-Eigenschaft:

 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) 
     }; 

Wenn Sie Raum zwischen zwei Tasten zum Beispiel wollen, glaube ich, das den Trick tun würde . Die erste 10 nach unten padding fügt die zweite fügt 10 nach oben Polsterung für insgesamt 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

meisten Xamarin.Forms Layouts unterstützt das Hinzufügen Raum zwischen Elementen:

  • StackLayout hat eine Spacing Eigenschaft,
  • Grid hat RowSpacing und ColumnSpacing Eigenschaften,
  • ...
Jetzt

, wenn Sie Abstand an einem bestimmten Ort hinzufügen mögen, die Art und Weise, um es zu schließen eine BoxView:

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

Sie Ihre Inhalte in einem Frame oder ContentView wickeln können, aber es fügt Polsterung zum Inhalt, anstatt Platz hinzuzufügen (obwohl der Effekt der gleiche sein wird).

1

Versuchen:

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

Was ich für mich perfekt gearbeitet haben:

Angenommen, Sie 2 Labels gleichmäßig auf einer horizontalen StackLayout verteilen möchten:

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" } 
    } 
}; 

Zusammenfassung

Durch Einfügen von BoxViews, die f Wenn Sie den verbleibenden Platz ("FillAndExpand") zwischen Ihren Ansichten sehen, erscheinen Ihre Ansichten gleichmäßig verteilt. Durch Setzen von Spacing = 0 erhalten Sie keinen zusätzlichen Speicherplatz zwischen Ihren Ansichten.