Xamarin.Forms中的分隔符

时间:2014-06-08 01:08:41

标签: xamarin xamarin.forms

我想在表单中使用水平分隔符行。据我所知,Xamarin.Forms并没有提供。

有人可以为分隔符提供一个片段吗?

更新1

根据Jason的提议,这看起来很好:

// draws a separator line and space of 5 above and below the separator    
new BoxView() { Color = Color.White, HeightRequest = 5  },
new BoxView() { Color = Color.Gray, HeightRequest = 1, Opacity = 0.5  },
new BoxView() { Color = Color.White, HeightRequest = 5  },

呈现以下分隔线:

enter image description here

8 个答案:

答案 0 :(得分:39)

您可以尝试使用BoxView

// sl is a StackLayout
sl.Children.Add(new BoxView() { Color = Color.Black, WidthRequest = 100, HeightRequest = 2 });

虽然在我的测试中,没有遵循宽度请求。这可能是一个错误,或者其他设置可能会干扰它。

答案 1 :(得分:9)

实际上有一种方法可以在Xamarin.Forms中显示分隔符:

myListView.SeparatorVisibility = Xamarin.Forms.SeparatorVisibility.Default;
myListView.SeparatorColor = Color.FromHex("C8C7CC");

隐藏:

myListView.SeparatorVisibility = Xamarin.Forms.SeparatorVisibility.None;

希望它有所帮助!

答案 2 :(得分:7)

@Jason 除了Jason的回答,你应该设置VerticalOptions以便能够使用HeightRequest,并设置Horizo​​ntalOptions以便能够使用WidthRequest。默认值是填充,这就是它没有响应的原因。 示例输出

<BoxView   VerticalOptions="Center"
           HorizontalOptions="Center"
           HeightRequest="1"
           WidthRequest="50"  
           Color="#5b5d68"></BoxView>

enter image description here

答案 3 :(得分:3)

添加1像素堆栈对我有用(在垂直堆栈中):

// Add a black line
MyVerticalStackLayout.Children.Add(
    new StackLayout { 
        HeightRequest = 1, 
        BackgroundColor = Color.Black, 
        HorizontalOptions = LayoutOptions.FillAndExpand
     }    
);

答案 4 :(得分:2)

你可以通过StackLayout实现这一目标。定义一个高度为1像素,宽度为320像素(iPhone屏幕尺寸)的StackLayout,然后将其添加到父版面中将对您有帮助。

StackLayout myLayout = new StackLayout();
myLayout.HeightRequest=1;
myLayout.WidthRequest=320;
myLayout.BackgroundColor= Color.Black;
parentLayout.Children.Add("myLayout");

答案 5 :(得分:2)

使用Xaml在StackLayout中实现BoxView的另一种方法。

这应该这样做

<StackLayout Orientation="Vertical">
       <Label HorizontalTextAlignment="Center" Text="Header" />
       <BoxView HeightRequest="1" BackgroundColor="Black" HorizontalOptions="FillAndExpand" />
</StackLayout>

答案 6 :(得分:0)

您还可以使用NuGet包Xamarin.Forms.Lab,其中包含许多自定义控件,可在编码时提供帮助。

此外,在此软件包中,还有一个带有分隔符的控件名称可以帮助您。

您可以从以下链接下载该软件包: https://www.nuget.org/packages/XLabs.Forms/

答案 7 :(得分:0)

您可以在app.xaml文件中定义自己的分隔线。

<Style x:Key="Separator" TargetType="BoxView">
            <Setter Property="HeightRequest" Value="1" />
            <Setter Property="HorizontalOptions" Value="FillAndExpand" />
            <Setter Property="Color" Value="Gray" />
            <Setter Property="Margin" Value="0, 5, 0, 5" />
            <Setter Property="Opacity" Value="0.5" />
</Style>

并将其用作样式。

<BoxView Style="{StaticResource Separator}" />