我有1 TableView
,3 TableSections
。
在iOS中,TableSections
之间有一个空格,这个空间不会在Android
中复制,我该如何在Android
中添加空格?而不破坏iOS布局。
我的想法:
我愿意接受其他想法,或者有人可以告诉我推荐的方法,或者对我追求哪种想法表示赞赏。
答案 0 :(得分:0)
我会使用PlatformSpecific
代码:
<YourElement.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,0,0,0" />
<On Platform="Android, WinPhone, Windows" Value="0,5,0,0" />
</OnPlatform>
</YourElement.Margin>
答案 1 :(得分:0)
解决方案:
我尝试过您的第一个想法Add a blank, disabled Cell which only shows on Android.
,它有点复杂,让我们逐步进行:
首先,我在每个TableSection
的末尾添加一个白色标签作为空格,这是我的Xaml
,请记住设置您的tableview.HasUnevenRows="True"
:
<ContentPage.Content >
<TableView Intent="Settings" HasUnevenRows="True">
<TableView.BindingContext>
<local:Model/>
</TableView.BindingContext>
<TableRoot>
<TableSection Title="Getting Started">
<SwitchCell Text="New Voice Mail" />
<SwitchCell Text="New Mail" On="true" />
<!--use as space-->
<ViewCell x:Name="cell2">
<StackLayout x:Name="s1">
<Label Text="space"
TextColor="#f35e20" BackgroundColor="White" HorizontalTextAlignment="Center" x:Name="spacelabel2"/>
</StackLayout>
</ViewCell>
</TableSection>
<TableSection Title="Getting Started22222" >
<ViewCell>
<StackLayout Orientation="Vertical">
<Label Text="left"
TextColor="#f35e20" BackgroundColor="Blue"/>
<Label Text="right"
HorizontalOptions="EndAndExpand"
TextColor="#503026" BackgroundColor="Orange"/>
</StackLayout>
</ViewCell>
<!--use as space-->
<ViewCell x:Name="cell1">
<StackLayout x:Name="s2">
<Label Text="space"
TextColor="#f35e20" BackgroundColor="White" HorizontalTextAlignment="Center" x:Name="spacelabel1"/>
</StackLayout>
</ViewCell>
</TableSection>
<TableSection Title="Getting Started33333" >
<ViewCell>
<StackLayout Orientation="Vertical">
<Label Text="left"
TextColor="#f35e20" BackgroundColor="Blue"/>
<Label Text="right"
HorizontalOptions="EndAndExpand"
TextColor="#503026" BackgroundColor="Orange"/>
</StackLayout>
</ViewCell>
</TableSection>
</TableRoot>
</TableView>
</ContentPage.Content>
我给ViewCell
命名为cell1
和cell2
,然后在后面的代码中,我使用Device.RuntimePlatform
来区分iOS
或{{1 }}:
Android
因此,在iOS中,这些白色标签将不会显示在此页面中;在Android中,这些标签将显示在每个部分的末尾。您可以将标签的背景色设置为与 protected override void LayoutChildren(double x, double y, double width, double height)
{
base.LayoutChildren(x, y, width, height);
if (Device.RuntimePlatform == Device.Android)
{
spacelabel1.IsVisible = true;
spacelabel2.IsVisible = true;
}
else
{
cell2.Height = 0.01;
cell1.Height = 0.01;
cell1.View.IsVisible = false;
cell2.View.IsVisible = false;
}
}
的颜色相同,然后看起来它们之间有一个空格。如有任何问题,请回复我。