Awesome
MaterialDesignControls Plugin for Xamarin Forms
<img src="https://raw.githubusercontent.com/HorusSoftwareUY/MaterialDesignControlsPlugin/master/icon.png" width="128">MaterialDesignControls Plugin for Xamarin.Forms, provides a collection of Xamarin.Forms controls that follow the Material Design 3 Guidelines.
Coming soon
.NET MAUI
We're developing the next version of the plugin for .NET MAUI, bringing you exciting features and improvements.
Demo
<img src="screenshots/Controls.gif" width="300">Content table
- Setup
- API Usage
- Styles
- Controls
- MaterialButton
- MaterialChips & MaterialChipsGroup
- MaterialDatePicker
- MaterialEditor
- MaterialEntry
- MaterialCodeEntry
- MaterialField
- MaterialPicker
- MaterialDoublePicker
- MaterialSelection
- MaterialTimePicker
- MaterialRating
- MaterialSlider
- MaterialSegmented
- MaterialDivider
- MaterialRadioButtons
- MaterialFloatingButton
- MaterialCheckbox
- MaterialSwitch
- MaterialTopAppBar
- MaterialProgressIndicator
- MaterialLabel
- MaterialBadge
- MaterialNavigationDrawer
- MaterialCustomControl
- MaterialSearch
- MaterialIconButton
- MaterialSnackBar
- MaterialDialog
- MaterialCard
- MaterialBottomSheet
- Effects
- Sample app
- Developed by
- Contributions
- License
Setup
- Available on NuGet: Plugin.MaterialDesignControls
- Install into your PCL project and Client projects.
Platform Support
Platform | Version |
---|---|
Xamarin.iOS | iOS 8+ |
Xamarin.Android | API 16+ |
Xamarin.Forms | >= 5.0.0.1874 |
API Usage
You must add this line to your platform specific project (AppDelegate.cs
, MainActivity.cs
) before you use MaterialDesignControls:
if you're using iOS:
Plugin.MaterialDesignControls.iOS.Renderer.Init();
or if you're using Android:
Plugin.MaterialDesignControls.Android.Renderer.Init();
You must add this namespace to your xaml files (deprecated):
xmlns:material="clr-namespace:Plugin.MaterialDesignControls;assembly=Plugin.MaterialDesignControls"
You must add this namespace to your xaml files to use Material Design 3 controls:
xmlns:material="clr-namespace:Plugin.MaterialDesignControls.Material3;assembly=Plugin.MaterialDesignControls"
Styles
You can override colors, font sizes, font families and animations to apply to all the Material controls. <br/> View documentation
Controls
MaterialButton
Buttons allow users to take actions, and make choices, with a single tap. <br/> <img src="screenshots/button_preview.png" width="300"> <br/> View documentation
MaterialChips & MaterialChipsGroup
Chips are compact elements that represent an input, attribute, or action. <br/> <img src="screenshots/chips_preview.png" width="300"> <br/> View MaterialChips documentation <br/> View MaterialChipsGroup documentation
MaterialDatePicker
Date pickers let users select a date. <br/> <img src="screenshots/datepicker_preview.png" width="300"> <br/> View documentation
MaterialEditor
Text fields let users enter and edit text. <br/> <img src="screenshots/editor_preview.png" width="300"> <br/> View documentation
MaterialEntry
Text fields let users enter and edit text. <br/> <img src="screenshots/entry_preview.png" width="300"> <br/> View documentation
MaterialCodeEntry
Code fields let users enter and edit pin codes. <br/> <img src="screenshots/code_preview.png" width="300"> <br/> View documentation
MaterialField
Displays a value with its respective label in read-only format. <br/> <img src="screenshots/field_preview.png" width="300"> <br/> View documentation
MaterialPicker
Pickers let users select an option. <br/> <img src="screenshots/picker_preview.png" width="300"> <br/> View documentation
MaterialDoublePicker
Double pickers let users select two options in the same dialog. <br/> <img src="screenshots/doublepicker_preview.png" width="300"> <br/> View documentation
MaterialSelection
Selection let users select an option. <br/> <img src="screenshots/selection_preview.png" width="300"> <br/> View documentation
MaterialTimePicker
Time pickers let users select a time. <br/> <img src="screenshots/timepicker_preview.png" width="300"> <br/> View documentation
MaterialRating
Displays a rating control <br/> <img src="screenshots/rating_preview.png" width="300"> <br/> View documentation
MaterialSlider
Displays a slider control <br/> <img src="screenshots/slider_preview.png" width="300"> <br/> View documentation
MaterialSegmented
Displays a segmented control <br/> <img src="screenshots/segmented_preview.png" width="300"> <br/> View documentation
MaterialDivider
A divider is a thin line that groups content in lists and layouts. <br/> <img src="screenshots/divider_preview.png" width="300"> <br/> View documentation
MaterialRadioButtons
Displays a radiobuttons control <br/> <img src="screenshots/radio_preview.png" width="300"> <br/> View documentation
MaterialFloatingButton
Displays a floating button <br/> <img src="screenshots/floatingbutton_preview.png" width="300"> <br/> View documentation
MaterialCheckbox
Displays a checkbox control <br/> <img src="screenshots/checkbox_preview.png" width="300"> <br/> View documentation
MaterialSwitch
Switches toggle the state of a single item on or off. <br/> <img src="screenshots/switch_preview.png" width="300"> <br/> View documentation
MaterialTopAppBar
TopAppBar displays information and actions at the top of a screen. <br/> <img src="screenshots/topappbar_preview.png" width="300"> <br/> View documentation
MaterialProgressIndicator
MaterialProgressIndicator show the status of a process in real time <br/> <img src="screenshots/progress_preview.png" width="300"> <br/> View documentation
MaterialLabel
MaterialLabel helps make writing legible and beautiful <br/> <img src="screenshots/label_preview.png" width="300"> <br/> View documentation
MaterialBadge
Badges show notifications, counts, or status information on navigation items and icons <br/> <img src="screenshots/badge_preview.png" width="300"> <br/> View documentation
MaterialNavigationDrawer
Navigation drawers let people switch between UI views on larger devices <br/> <img src="screenshots/navigation_preview.png" width="300"> <br/> View documentation
MaterialCustomControl
This control provides a simple way to create custom controls with labels and support text that follow the Material Design Guidelines. <br/> <img src="screenshots/customcontrol_preview.png" width="300"> <br/> View documentation
MaterialSearch
MaterialSearch receives a text and executes a search action. <br/> <img src="screenshots/search_preview.png" width="300"> <br/> View documentation
MaterialIconButton
MaterialIconButton displays an icon and can execute a command. <br/> <img src="screenshots/iconbutton_preview.png" width="300"> <br/> View documentation
MaterialSnackBar
MaterialSnackBar show short updates about app processes at the bottom of the screen. <br/> <img src="screenshots/snackbar_preview.png" width="300"> <br/> View documentation
MaterialDialog
MaterialDialog provide important prompts in a user flow. <br/> <img src="screenshots/dialog_preview.png" width="300"> <br/> View documentation
MaterialCard
MaterialCard display content and actions about a single subject. <br/> <img src="screenshots/card_preview.png" width="300"> <br/> View documentation
MaterialBottomSheet
MaterialBottomSheet shows secondary content anchored to the bottom of the screen. <br/> <img src="screenshots/bottomsheet_preview.png" width="300"> <br/> View documentation
<br/>
Effects
TouchAndPressEffect
Effect to detect the different types of taps on a view: Pressing, Released and Canceled can be detected.
Example
<MyControl.Effects>
<material:TouchAndPressEffect />
</MyControl.Effects>
public class MyControl : ContentView, ITouchAndPressEffectConsumer
{
public void ConsumeEvent(EventType gestureType)
{
TouchAndPressAnimation.Animate(this, gestureType);
}
}
Sample app
https://github.com/HorusSoftwareUY/MaterialDesignControlsPlugin/tree/master/example
Developed by
<a href="http://horus.com.uy"><img src="https://assets-global.website-files.com/64a7016392b0b7da3a8604e3/64a7016392b0b7da3a8604ed_horus.svg" width="128"></a>
Contributions
Contributions are welcome! If you find a bug want a feature added please report it.
If you want to contribute code please file an issue, create a branch, and file a pull request.
License
MIT License - see LICENSE.txt