EntryCustomReturnPlugin
EntryCustomReturnPlugin copied to clipboard
Xamarin.Forms Plugin to customize the Xamarin.Forms.Entry Keyboard Return Button
Custom Xamarin.Forms.Entry Keyboard Return Button
This SDK was officially merged into Xamarin.Forms v3.1.0.
Because this SDK supports Xamarin.Forms v2.5.0.280555, I will continue to maintain it for teams who have not yet upgraded to Xamarin.Forms v3.1.0 or higher.
For developers using Xamarin.Forms 3.1.0 or higher, I recommend removing this NuGet package from your csproj and using the APIs included in Xamarin.Forms: Xamarin.Forms.Entry.ReturnType & Xamarin.Forms.Entry.ReturnCommand.
ReturnType
| ReturnType | Android | iOS | UWP |
|---|---|---|---|
| Default | ![]() |
![]() |
![]() |
| Done | ![]() |
![]() |
![]() |
| Go | ![]() |
![]() |
![]() |
| Next | ![]() |
![]() |
![]() |
| Search | ![]() |
![]() |
![]() |
| Send | ![]() |
![]() |
![]() |
Platform Support
| Platform | Supported | Version |
|---|---|---|
| Xamarin.iOS | Yes | iOS 8+ |
| Xamarin.iOS Unified | Yes | iOS 8+ |
| Xamarin.Android | Yes | API 15+ |
| Windows 10 UWP | Yes | 10+ |
| Windows Phone Silverlight | No | |
| Windows Phone RT | No | |
| Windows Store RT | No | |
| Xamarin.Mac | No |
This plugin can be consumed as a CustomRenderer Control or as an Effect.
Setup
- Available on NuGet: https://www.nuget.org/packages/Xam.Plugins.Forms.CustomReturnEntry/
- Install into your PCL project and Client projects.
iOS
In the FinishedLaunching method of AppDelegate.cs, add CustomReturnEntryRenderer.Init();:
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
...
global::Xamarin.Forms.Forms.Init();
EntryCustomReturn.Forms.Plugin.iOS.CustomReturnEntryRenderer.Init();
...
}
}
Note: You must call EntryCustomReturn.Forms.Plugin.iOS.CustomReturnEntryRenderer.Init(); after you call global::Xamarin.Forms.Forms.Init();
Android
In the Oncreated method of MainActivity.cs, add CustomReturnEntryRenderer.Init();:
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
...
global::Xamarin.Forms.Forms.Init(this, bundle);
EntryCustomReturn.Forms.Plugin.Android.CustomReturnEntryRenderer.Init();
...
}
}
Note: You must call EntryCustomReturn.Forms.Plugin.Android.CustomReturnEntryRenderer.Init(); after you call global::Xamarin.Forms.Forms.Init(this, bundle);
UWP
In the OnLaunched method of App.xaml.cs, add CustomReturnEntryRenderer.Init();:
public partial class App : Application
{
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
...
global::Xamarin.Forms.Forms.Init(e);
EntryCustomReturn.Forms.Plugin.UWP.CustomReturnEntryRenderer.Init();
...
}
}
Note: You must call EntryCustomReturn.Forms.Plugin.UWP.CustomReturnEntryRenderer.Init(); after you call global::Xamarin.Forms.Forms.Init(e);
Usage in Xamarin.Forms Project as a Custom Control
This plugin can be consumed as a CustomRenderer Control or as an Effect.
1. Set the ReturnType Property
The ReturnType property is an enum containing 6 different types: Default, Go, Next, Done, Send, Search.
Coded UI
var goReturnTypeCustomEntry = new CustomReturnEntry
{
ReturnType = EntryCustomReturn.Forms.Plugin.Abstractions.ReturnType.Go
};
XAML UI
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnType="Go"/>
</ContentPage.Content>
</ContentPage>
Bindable Property
ReturnType can also be used as a Bindable Property to bind to a ViewModel
Coded UI
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new CustomReturnEntry();
customReturnEntry.SetBinding(CustomReturnEntry.ReturnTypeProperty, nameof(MyViewModel.EntryReturnType));
XAML UI
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnType="{Binding EntryReturnType}"/>
2. Set the ReturnCommand Command
ReturnCommand will fire when the user finalizes the text in an entry with the return key.
Coded UI
goReturnTypeCustomEntry.ReturnCommand = new Command(() => Navigation.PushAsync(new ContentPage()));
XAML UI
Use the Coded UI example above to initialize a Command in the XAML Code Behind
Bindable Property
ReturnCommand can also be used as a Bindable Property to bind to a ViewModel
Coded UI
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new CustomReturnEntry();
customReturnEntry.SetBinding(CustomReturnEntry.ReturnCommandProperty nameof(MyViewModel.EntryReturnCommand));
XAML UI
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:SimpleXamlSample"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions"
BindingContext="{Binding Source={local:MyViewModel}}">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnCommand="{Binding EntryReturnCommand}"/>
</ContentPage.Content>
</ContentPage>
3. Set the ReturnCommandParameter Property
The ReturnCommandParameter property is an object that can be passed to the ReturnCommand property.
Coded UI
goReturnTypeCustomEntry.ReturnCommand = new Command<string>(async title => await DisplayAlert(title, "", "Ok"));
goReturnTypeCustomEntry.ReturnCommandParameter = "Return Button Tapped";
XAML UI
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnCommandParameter="Return Button Tapped"/>
</ContentPage.Content>
</ContentPage>
Bindable Property
ReturnCommandParameter can also be used as a Bindable Property to bind to a ViewModel
Coded UI
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new CustomReturnEntry();
customReturnEntry.SetBinding(CustomReturnEntry.ReturnCommandParameterProperty, nameof(MyViewModel.EntryReturnCommandParameter));
XAML UI
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
ReturnCommandParameter="{Binding EntryReturnCommandParameter}"/>
Usage in Xamarin.Forms Project as an Effect
This plugin can be consumed as a CustomRenderer Control or as an Effect.
1. Set the ReturnType Property
The ReturnType property is an enum containing 6 different types: Default, Go, Next, Done, Send, Search.
Coded UI
var goReturnTypeEntry = new Entry()
CustomReturnEffect.SetReturnType(goReturnTypeEntry, EntryCustomReturn.Forms.Plugin.Abstractions.ReturnType.Go);
XAML UI
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions">
<ContentPage.Content>
<Entry
x:Name = "GoReturnTypeEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnType="{x:Static entryCustomReturn:ReturnType.Default}"/>
</ContentPage.Content>
</ContentPage>
Bindable Property
ReturnType can also be used as a Bindable Property to bind to a ViewModel
Coded UI
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new Entry();
customReturnEntry.SetBinding(CustomReturnEffect.ReturnTypeProperty, nameof(MyViewModel.EntryReturnType));
XAML UI
<Entry
x:Name = "GoReturnTypeEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnType="{Binding EntryReturnType}"/>
2. Set the ReturnCommand Command
ReturnCommand will fire when the user finalizes the text in an entry with the return key.
Coded UI
var goReturnTypeEntry = new Entry()
CustomReturnEffect.SetReturnCommand(goReturnTypeEntry, new Command(() => Navigation.PushAsync(new ContentPage()));
XAML UI
Use the Coded UI example above to initialize a Command in the XAML Code Behind
Bindable Property
ReturnCommand can also be used as a Bindable Property to bind to a ViewModel
Coded UI
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new Entry();
customReturnEntry.SetBinding(CustomReturnEffect.ReturnCommandProperty, nameof(MyViewModel.EntryReturnCommand));
XAML UI
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="SimpleXamlSample"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions"
BindingContext="{Binding Source={local:MyViewModel}}">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnCommand="{Binding EntryReturnCommand}"/>
</ContentPage.Content>
</ContentPage>
3. Set the ReturnCommandParameter Property
The ReturnCommandParameter property is an object that can be passed to the ReturnCommand property.
Coded UI
var goReturnTypeEntry = new Entry()
CustomReturnEffect.SetReturnCommand(goReturnTypeEntry, new Command<string>(async title => await DisplayAlert(title, "", "Ok")));
CustomReturnEffect.SetReturnCommandParameter(goReturnTypeEntry, "Return Button Tapped");
XAML UI
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SimpleXamlSample.CustomRendererPage"
xmlns:entryCustomReturn="clr-namespace:EntryCustomReturn.Forms.Plugin.Abstractions;assembly=EntryCustomReturn.Forms.Plugin.Abstractions">
<ContentPage.Content>
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnCommandParameter="Return Button Tapped"/>
</ContentPage.Content>
</ContentPage>
Bindable Property
ReturnCommandParameter can also be used as a Bindable Property to bind to a ViewModel
Coded UI
var viewModel = new MyViewModel();
BindingContext = viewModel;
var customReturnEntry = new Entry();
customReturnEntry.SetBinding(CustomReturnEffect.ReturnCommandParameterProperty, nameof(MyViewModel.EntryReturnCommandParameter));
XAML UI
<entryCustomReturn:CustomReturnEntry
x:Name = "MyCustomReturnEntry"
HorizontalOptions="Center"
VerticalOptions="Center"
entryCustomReturn:CustomReturnEffect.ReturnCommandParameter="{Binding EntryReturnCommandParameter}"/>













