2016-07-13 97 views
2

我有以下代碼:與Xamarin XAML堆棧佈局佈局噩夢形成

<StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" Margin="0,10,0,10" BackgroundColor="Green" Padding="5,5,5,5"> 
     <StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" Margin="0,0,0,0" BackgroundColor="Blue"> 
       <Label Text="SHOW COMPLETED TASKS" BackgroundColor="Red" Style="{StaticResource lblSubHeading_Black}" /> 
     </StackLayout> 
     <Switch x:Name="CompletedJobsSwitch" Toggled="CompletedJobsSwitch_Toggled" HorizontalOptions="EndAndExpand" IsToggled="{Binding isOn}" BackgroundColor="Yellow"/> 
    </StackLayout> 

這一切都加載罰款,但是當應用程序加載它顯示,但交換機不刷新正確。爲什麼?這真的很煩人,似乎很不一致enter image description here 我看過http://forums.xamarin.com/discussion/21226/how-to-right-align-a-view-inside-a-list-item但這不適合我。

任何想法?

+0

這並不矛盾。 StackLayout只需要儘可能多的空間。嘗試在最高級別放置一個「網格」。 –

+0

當我說變量不定時,我的意思是XAML for Xamarin表單,但是我設置StackLayout t來填充和擴展,爲什麼不這樣做呢?添加網格似乎在這個問題上貼了石膏。 –

+0

您不必添加網格,只需將網格替換爲頂層StackLayout即可。 –

回答

7

使用此

<Grid BackgroundColor="Green"> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="auto" /> 
    </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="auto" /> 
    </Grid.ColumnDefinitions> 
    <Label Text="SHOW COMPLETED TASKS" BackgroundColor="Red" /> 
    <Switch x:Name="CompletedJobsSwitch" BackgroundColor="Yellow" Grid.Column="1" /> 
</Grid> 
+0

優秀的作品一個治療感謝!正是我需要:) –

+0

這個解決方案對我來說也很棒。我用一個方向=「水平」的StackLayout遇到了同樣的問題,最後一個項目是一個帶有Horizo​​ntalOptions =「End」的開關。它在各種尺寸的Android屏幕和更寬的IOS屏幕上工作正常(將開關對準屏幕右側),但在較小的IOS屏幕上,開關按照圖示滑動到左側。上面的網格方法在我測試過的所有屏幕上都能正常工作。 –