Skip to content

Latest commit

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TagsView

Build status

Package NameVersion
TagsViewNuGet
MvxTagsViewNuGet

Simple and highly customizable Xamarin.iOS tag list view. Originally inspired by https://github.com/ElaWorkshop/TagListView

Customizable features:

  • Left/Center/Right alignment
  • Font
  • X/Y Margins
  • X/Y Paddings
  • Text color
  • Background text color
  • Tag corner radius
  • Tag border color
  • Tag border width
  • Tag border color
  • Tag controls distance
  • Tag icon
  • Tag icon size
  • Tag icon color
  • Tag selected event
  • Tag button tapped event

Screenshot

Download & Install

Get it on Nuget!

TagsView

MvxTagsView

Requirements

iOS 9+

Features and usage

It's super simple to get started:

publicclassViewController:UIViewController{privateTagListViewtagsView;publicoverridevoidViewDidLoad(){// codethis.tagsView=newTagListView(){// you can customize properties here!};this.View.AddSubview(this.tagsView);this.View.AddConstraints(// Add your constraints!);// you can attach a source object to each tagvarmyObject=newMyModel{Title="I'm a MyModel!"};this.tagsView.AddTag(myObject.Title,myObject);// but, if none is provided, it will be the text string this.tagsView.AddTag("I'm a simple tag!");}}

By default, TagsView will display a button next to the text of the tag. To prevent this, you can pass the value false for the parameter enableTagButton in its constructor.

As explained in the code snippet, each tag can contain a source object. These will be available for you on the events the control exposes:

  • TagSelected: User tapped a tag.
  • TagButtonTapped: User tapped a tag button.

There are also a lot of properties available for you to customize the look & feel:

FeaturePropertyType
AlignmentAlignmentTagsAlignment
Text colorTagTextColorUIColor
Tag background colorTagBackgroundColorUIColor
FontTextFontUIFont
Tag corner radiusCornerRadiusfloat
Tag border widthBorderWidthfloat
Tag border colorBorderColorUIColor
Padding YPaddingYfloat
Padding XPaddingXfloat
Margin YMargin Yfloat
Margin XMargin Xfloat
Distance between text and buttonControlsDistancefloat
Button sizeTagButtonSizefloat
Button colorTagButtonColorUIColor
Button iconButtonIconUIImage

MvvmCross version

If you are using MvvmCross, you can take advantage of MvxTagListView!

publicclassViewController:UIViewController{// declare a MvxTagListView using MyObject as items typeprivateMvxTagListView<MyObject>mvxTagsView;publicoverridevoidViewDidLoad(){// You need to specify how MyObject can be translated to a string in the ctor!this.mvxTagsView=newMvxTagListView<MyObject>(
myObject =>myObject.Title){// you can customize properties here!};this.View.AddSubview(this.mvxTagsView);this.View.AddConstraints(// Add your constraints!);varset=this.CreateBindingSet<FirstView,FirstViewModel>();// In this case, YourSource should be an ObservableCollection<MyObject>set.Bind(this.mvxTagsView).For(v =>v.ItemsSource).To(vm =>vm.YourSource);// MyObjectTagSelectedCommand should be a IMvxCommand<MyObject>set.Bind(this.mvxTagsView).For(v =>v.TagSelectedCommand).To(vm =>vm.MyObjectTagSelectedCommand);// MyObjectTagButtonTappedCommand should be a IMvxCommand<MyObject>set.Bind(this.mvxTagsView).For(v =>v.TagButtonTappedCommand).To(vm =>vm.MyObjectTagButtonTappedCommand);set.Apply();}}

As you can see from the code snippet, the control allows you to bind ItemsSource and two commands: TagSelectedCommand, TagButtonTappedCommand.

Using a collection of strings as items source

If your source is just a collection of strings, you should consider using MvxSimpleTagListView, super handy!

publicclassMvxSimpleTagListView:MvxTagListView<string>{publicMvxSimpleTagListView(boolenableTagButton=true):base(s =>s,enableTagButton){}}

Contribution

Pull requests (and issues) are welcome!

License

MIT

About

Simple and highly customizable Xamarin.iOS tag list view. Originally inspired by https://github.com/ElaWorkshop/TagListView

Topics

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages