2014-06-08 14 views
8

में लेआउट स्थान जोड़ने का प्रस्तावित तरीका क्या है?Xamarin.Forms लेआउट में जगह जोड़ना?

एक तरह से कोई संतान नहीं तो जैसे के साथ एक फ्रेम जोड़ने के लिए होगा:

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

दुर्भाग्य से, HeightRequest और MinimumHeightRequest को नजरअंदाज कर दिया जाता है।

क्या बेहतर तरीका मौजूद है?

उत्तर

9

आप अपने नियंत्रण लेआउट के अंदर (फ्रेम, स्क्रॉल देखने के लिए, ढेर पैनल) की तरह रख सकते हैं और इस्तेमाल कर सकते हैं पैडिंग संपत्ति:

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

यदि आप चाहते हैं, उदाहरण के लिए दो बटन के बीच की जगह है, मैं इस चाल करना होगा विश्वास करते हैं । पहले एक नीचे गद्दी के लिए 10 कहते हैं, दूसरा 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 लेआउट की कुल के लिए शीर्ष गद्दी के लिए 10 कहते हैं तत्वों के बीच अंतरिक्ष जोड़ने का समर्थन:

  • StackLayout एक Spacing संपत्ति,
  • है
  • Grid है RowSpacing और ColumnSpacing गुण,
  • ...

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

तुम भी एक Frame या ContentView में अपनी सामग्री को लपेट कर सकते हैं, लेकिन यह कहते हैं गद्दी:

अब, आप किसी विशेष स्थान पर रिक्ति जोड़ना चाहते हैं, यह करने के लिए जिस तरह से एक BoxView शामिल करने के लिए अंतरिक्ष जोड़ने की बजाय सामग्री के लिए (हालांकि प्रभाव वही होगा)।

1

प्रयास करें:

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

क्या मैं पूरी तरह से मेरे लिए काम किया है:

मान लीजिए आप एक क्षैतिज StackLayout पर समान रूप से 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" } 
    } 
}; 

सारांश

बॉक्सव्यूज़ डालने से f अपने विचारों के बीच शेष स्थान ("FillAndExpand") बीमार करें, आपके विचार समान रूप से वितरित होते हैं। Spacing = 0 सेट करके, आपको अपने विचारों के बीच अतिरिक्त जगह नहीं मिलती है।

संबंधित मुद्दे