是否可以为选择器的下划线指定颜色?
is it possible to give the underline bar of a picker a color?
是否可以在 Xamarin Forms 中更改选择器(照片)的下划线?我正在尝试做一个很好的验证错误。
还有其他技巧可以做出漂亮的设计吗?
<Label HorizontalOptions="Fill"
VerticalOptions="Center"
HorizontalTextAlignment="End"
Text="*"
TextColor="Red"
x:Name="lbldocid"
Grid.Column="0"
Grid.Row="3"
IsVisible="false"/>
<Label Grid.Row="3"
Grid.Column="1"
x:Name="lbldocumentid"
Text="Document id: "
WidthRequest="100"
HorizontalOptions="Fill"
VerticalOptions="Center"
HorizontalTextAlignment="End"/>
<StackLayout x:Name="sldocid"
Padding="1"
Margin="20,0,20,0"
Orientation="Vertical"
Grid.Row="3"
Grid.Column="2">
<Picker x:Name="pickerdocid"
BackgroundColor="#fafafa"
HorizontalOptions="Fill"/>
<Label x:Name="lbldociderror"
Margin="5,0,0,0"
IsVisible="false"
TextColor="White"
FontSize="12"
Text="You need to select documentid."/>
</StackLayout>
照片:
picker
有很多细节需要解释,你可以参考我下面的代码,虽然直接附上代码不是一个好的答案......
<Grid Margin="0,100,0,0" >
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label HorizontalTextAlignment="Center"
VerticalTextAlignment="Center"
Text="*"
TextColor="Red"
x:Name="lbldocid"
Grid.Column="0" />
<Label Grid.Column="1"
x:Name="lbldocumentid"
HorizontalTextAlignment="Center"
VerticalTextAlignment="Center"
Text="ID" />
<Grid x:Name="sldocid"
RowSpacing="0"
BackgroundColor="Red"
Padding="1"
Margin="0,0,10,0"
Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="0.5"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Picker x:Name="pickerdocid"
BackgroundColor="White"
Grid.Row="0" >
<Picker.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Baboon</x:String>
<x:String>Capuchin Monkey</x:String>
<x:String>Blue Monkey</x:String>
<x:String>Squirrel Monkey</x:String>
<x:String>Golden Lion Tamarin</x:String>
<x:String>Howler Monkey</x:String>
<x:String>Japanese Macaque</x:String>
</x:Array>
</Picker.ItemsSource>
</Picker>
<Label BackgroundColor="Gray" Grid.Row="1"/>
<Label x:Name="lbldociderror"
Margin="0,5,0,0"
VerticalTextAlignment="End"
Grid.Row="2"
BackgroundColor="Red"
TextColor="White"
FontSize="8"
Text="You need to select documentid."/>
</Grid>
</Grid>
要去除Picker的边框,我们可以在不同的平台上使用PickRenderer
Android:
[assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRenderer))]
namespace FormsApp.Droid
{
class CustomPickerRenderer : PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
GradientDrawable gd = new GradientDrawable();
gd.SetStroke(0, Android.Graphics.Color.Transparent);
Control.SetBackground(gd);
}
}
}
}
iOS:
[assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRender))]
namespace FormsApp.iOS
{
class CustomPickerRender :PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
var view = e.NewElement as Picker;
this.Control.BorderStyle = UITextBorderStyle.None;
}
}
}
Test
iOS:
Android:
是否可以在 Xamarin Forms 中更改选择器(照片)的下划线?我正在尝试做一个很好的验证错误。
还有其他技巧可以做出漂亮的设计吗?
<Label HorizontalOptions="Fill"
VerticalOptions="Center"
HorizontalTextAlignment="End"
Text="*"
TextColor="Red"
x:Name="lbldocid"
Grid.Column="0"
Grid.Row="3"
IsVisible="false"/>
<Label Grid.Row="3"
Grid.Column="1"
x:Name="lbldocumentid"
Text="Document id: "
WidthRequest="100"
HorizontalOptions="Fill"
VerticalOptions="Center"
HorizontalTextAlignment="End"/>
<StackLayout x:Name="sldocid"
Padding="1"
Margin="20,0,20,0"
Orientation="Vertical"
Grid.Row="3"
Grid.Column="2">
<Picker x:Name="pickerdocid"
BackgroundColor="#fafafa"
HorizontalOptions="Fill"/>
<Label x:Name="lbldociderror"
Margin="5,0,0,0"
IsVisible="false"
TextColor="White"
FontSize="12"
Text="You need to select documentid."/>
</StackLayout>
照片: picker
有很多细节需要解释,你可以参考我下面的代码,虽然直接附上代码不是一个好的答案......
<Grid Margin="0,100,0,0" >
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label HorizontalTextAlignment="Center"
VerticalTextAlignment="Center"
Text="*"
TextColor="Red"
x:Name="lbldocid"
Grid.Column="0" />
<Label Grid.Column="1"
x:Name="lbldocumentid"
HorizontalTextAlignment="Center"
VerticalTextAlignment="Center"
Text="ID" />
<Grid x:Name="sldocid"
RowSpacing="0"
BackgroundColor="Red"
Padding="1"
Margin="0,0,10,0"
Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="0.5"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Picker x:Name="pickerdocid"
BackgroundColor="White"
Grid.Row="0" >
<Picker.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Baboon</x:String>
<x:String>Capuchin Monkey</x:String>
<x:String>Blue Monkey</x:String>
<x:String>Squirrel Monkey</x:String>
<x:String>Golden Lion Tamarin</x:String>
<x:String>Howler Monkey</x:String>
<x:String>Japanese Macaque</x:String>
</x:Array>
</Picker.ItemsSource>
</Picker>
<Label BackgroundColor="Gray" Grid.Row="1"/>
<Label x:Name="lbldociderror"
Margin="0,5,0,0"
VerticalTextAlignment="End"
Grid.Row="2"
BackgroundColor="Red"
TextColor="White"
FontSize="8"
Text="You need to select documentid."/>
</Grid>
</Grid>
要去除Picker的边框,我们可以在不同的平台上使用PickRenderer
Android:
[assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRenderer))]
namespace FormsApp.Droid
{
class CustomPickerRenderer : PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
GradientDrawable gd = new GradientDrawable();
gd.SetStroke(0, Android.Graphics.Color.Transparent);
Control.SetBackground(gd);
}
}
}
}
iOS:
[assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRender))]
namespace FormsApp.iOS
{
class CustomPickerRender :PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
var view = e.NewElement as Picker;
this.Control.BorderStyle = UITextBorderStyle.None;
}
}
}
Test
iOS:
Android: