2014-06-08 22 views
8

alanını düzenine Xamarin.Forms içinde eklemenin önerilen yolu nedir?Xamarin.Forms düzenlerinde alan ekleme?

bir yolu yok çocuklar şöyle ile Frame eklemek olacaktır:

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

Maalesef HeightRequest ve MinimumHeightRequest görmezden gelirler.

Daha iyi bir yolu var mı?

cevap

9

Sen (çerçeve, kaydırma görünümünde, yığın paneli gibi) düzenleri içine kontrollerinizi koymak ve kullanabilirsiniz Dolgu özelliği:

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

örneğin iki düğme arasındaki boşluk, bu hile yapacağını inanıyorum istiyorsanız . ilk alt dolgu 10 ekler, ikinci en 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

Xamarin.Forms Düzenleri toplam üst dolgu 10 ekler elemanları arasındaki boşluk ekleyerek destekler:

  • StackLayout bir Spacing özelliği,
  • sahip
  • GridRowSpacing ve ColumnSpacing özelliklerini,
  • ... vardır
Ayrıca Frame veya ContentView bir içeriğinizi sarabilirsiniz

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

, ancak ekler dolgu: Belirli bir yerde boşluğu eklemek istiyorsanız Şimdi

, öyle etmek için yolu BoxView dahil etmek boşluk eklemek yerine içeriğe (etki aynı olmasına rağmen).

1

Dene:

yatay bir StackLayout eşit olarak 2 Etiketler dağıtmak istediğinizi varsayalım: benim için mükemmel çalıştı Neler

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

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

Özeti

Bu f BoxView'ları ekleyerek Görünümler arasında kalan alanı ("FillAndExpand") hasta, görünümler eşit dağılmış görünür. Spacing = 0 ayarlanarak, görünümler arasında fazladan yer kalmaz.

İlgili konular