New UI Widgets

New UI Widgets is a set of widgets and UI interactions; it also includes a widgets generator for the custom data types and converter from default Text to TextMeshPro.

Collections:

Widgets can be generated for your custom type with the context menu “Create / New UI Widgets / Generate Widgets”
Virtualization (recycling) supported: game objects are created for visible items only.

Containers:

Dialog:

Controls:

Input:

Other:

Interactions:

Includes UI Themes package.

Works with:

* not available on platforms with restricted access to the file system (like WebGL and Windows Store/UWP)

Asset Store
Demo
Documentation

Changelog
v1.18.10

  • Unity 6.4 support

v1.18.9

  • Autocomplete: char[] DelimiterChars replaced with string[] Delimiters
  • Cursors: fixed an incorrect warning when cursors are specified in the component
  • ListView: added OnItemDropped event
  • ModalHelper: Open() method is replaced with OpenAt() method with simplified signature
  • RoundedCorners: added FadeSupport option, enabled by default
  • Tooltip: added an AnchoredPosition option to the TooltipSettings, used when Position is set to Fixed
  • TreeView: added NodeDropped event

v1.18.8

  • fixed “[RuntimeInitializeOnLoad] methods cannot be in generic classes” warning

v1.18.7

  • TrackView demo: fixed the stack overflow bug
  • SafeArea demo: fixed swapped top and bottom border

v1.18.6

  • Unity 6.3 support
  • fixed error when an empty TextMeshPro package version 5.0.0 is installed
  • fixed conversion from ColorHSV to Color (completely black and white colors were impossible)
  • ListViewEnum: now you can specify a list of enums to use with Wrapper = ListView.UseEnum(new [] { EnumType.Value0, EnumType.Value3, });
  • Paginator: fixed the problem with Forced Position = Center on the first and last page

v1.18.5

  • fixed error on first-time installation (“UITHEMES_INSTALLED” is not added to the “Scripting Define Symbols”)

v1.18.4

  • ColorPicker: fixed a bug related to linear color space handling
  • ListView: fixed a bug where an incorrect number of items were displayed when using large margins
  • ListView: fixed a bug in Variable Size mode when the data type does not implement IComparable
  • ListView: fixed a bug in Variable Size mode where rows or columns were miscalculated
  • ListView: fixed a bug with ReversedOrder and asymmetric margins

v1.18.3

  • Unity 6.1 and 6.2 support
  • added implementation of the IEquatable<T> interface for all data types
  • added ObservableData and ObservableDataWithPropertyChanged - base classes for the observable types
  • added CalendarSpinner and DateSpinnerPicker prefabs (year can be changed with Spinner)
  • added CalendarYearList and DateYearListPicker prefabs (similar to Windows calendar), replacing previous Calendar and DatePicker
  • AutoCombobox: fixed disabled InputField when no selected item
  • DateTime and DateTimePicker prefabs: now CalendarYearList is used by default
  • ListView: fixed bug when deselect events are called with SelectedIndices in an invalid state
  • Picker: added OnClose callback
  • Popup: OnClose callback now is called after the close animation ends
  • Tabs: added Animation, AnimationDuration, UnscaledTime, and CustomAnimation options
  • TracksView: fixed bug with undisplayed items (thanks to cookiedrugs)
  • WindowAnimations: fixed bug with incorrect anchorMax of the RectTransform
  • WindowAnimations: one frame delay in animations is replaced with the OnAnimationStart event in the widgets that use this component

v1.18.2

  • added FileTable prefab
  • added StackView container
  • added Unity Localization Support (will be used default table specified in the “String Database / Default Table Reference” in the localization settings)
  • fixed error when InputSystem is not installed
  • Dialog: added parent argument to the Show() and ShowAsync() methods
  • EasyLayout: the SettingsChanged event now is called if values changed in the Inspector window
  • EasyLayout: fixes for the Flex layout
  • IViewData: added the OnItemChanged property
  • ListView: added Flex layout support for the TileView with Fixed Size
  • ListView: fixed bug with KeepScrollAtBottom when item is larger than ListView container
  • ListViewComponent: added the OnItemChanged property
  • Paginator: the VisiblePagesCount even values are rounded up to an odd number except 0
  • Project Settings: now can change default namespaces and paths for the Widgets Generator
  • RounderCorners and RounderCornersX4: now correctly work with the Mask component if Mask is placed after the RounderCorners component
  • Shaders: fixed the shaders bug in VR mode
  • Widgets Generator: added DataBind support for the Item property of the created ListViewComponent and TreeViewComponent
  • Widgets Generator: fixed bug with get-only properties

v1.18.1

  • ContextMenu: now the Visible and Interactable options of menu items are enabled by default
  • Notification: added the AnimateOnHideButton option, if enabled the hide animation will run on HideButton click
  • Notification Animations: the ShowDuration and HideDuration options are obsolete, use the ShowAnimationCurve and HideAnimationCurve options instead
  • Notification Animations: removed the ShowAnimateOthers and HideAnimateOthers options, you can use the EasLayout.MovementAnimation option instead
  • ScrollRectPaginator: now the ActivePage can work even if DefaultPage is not specified
  • UIThemes Support: added support for default/active icons for the TabsIcons
  • Widgets Generator: added support for the R3.SerializableReactiveProperty fields and properties

v1.18.0

  • Dialog, Picker, Popup: added animations support, for the existing dialogs/pickers/popups you can add the WindowAnimations component or create a custom animation component with IWindowAnimations implementation
  • EasyLayout: removed incorrect warning in some cases
  • Notification: added the NotificationsAnimations component for open/close animations, it has more priority than ShowAnimation and HideAnimation fields and arguments, you can create a custom animation component with the IWindowAnimations implementation
  • TableHeader: added the FillContextMenu and ContextMenuNames options to automatically fill ContextMenu to enable/disable columns
  • UtilitiesTime static fields were replaced with WidgetsTime.Instance
  • Widgets Generator: added ContextMenu to enable/disable table columns
  • reduced amount of static fields

v1.17.16

  • Effects: fixed bug with zero vertices (like Text component without any text)
  • ListView: added the KeepScrollAtBottom option, which keeps the scroll at the bottom on DataSource changes (only if the scroll is already at the bottom)
  • ObservableListFilter: Output now uses the same comparison as Input
  • Widgets Generator: added option to specify paths for the created scripts, prefabs, scenes, etc
  • Widgets Generator: added GeneratorPaths attribute to specify paths directly in the data type
  • Widgets Generator: added GeneratorNamespace attribute to specify namespaces for the created scripts directly in the data type
  • shaders: fixed bug related to HDR
  • shaders: fixed bug related to VR

v1.17.15

  • InputAdapter: added workaround to properly update layout because TMP_InputField does not call LayoutRebuilder.MarkLayoutForRebuild() when it should be
  • ListView: the RetainScrollPosition option now correctly works with the enabled ReversedOrder option
  • Project Settings: removed performance impact on enter/exit play mode
  • Rating: fixed error on Value = 0
  • Rating: now interactable works properly
  • SafeArea: added OnScreenChange event with information about borders
  • Swipe: added OnTap event
  • UIThemes: added the “Attach UI Only” option in “Project Settings… / UI Themes”, if enabled ThemeTarget component will be added only to game objects with RectTransform component

v1.17.14

  • COMPATIBILITY-BREAKING CHANGES: methods Updater.RunOnce(Action) and Updater.RunOnceNextFrame(Action) replaced with methods Updater.RunOnce(UnityEngine.Object owner, Action) and Updater.RunOnceNextFrame(UnityEngine.Object owner, Action)
  • added ListViewDefaultItemAutoResize: automatically changes item instances size on ListView resize, used when only one item should be visible
  • InputFieldAdapter: added the SetTextWithoutNotify(string text) method
  • EasyLayout: added warning when one of the objects in the same row has relative width (or one of the objects in the same column has relative height)
  • EasyLayout: added IgnoreLayoutElementSizes option: if enabled ILayoutElement options will be ignored, increases performance without side effects if ChildrenWidth and ChildrenHeight are not controlled
  • EasyLayout: added Hex layout
  • ScrollBlock: added ScrollBlockResizer component to resize ScrollBlock items to display specified item count independent of size
  • TreeView: fixed bug in the TreeViewDropSupport components
  • UIThemes: now support addressable assets, support can be enabled in “Project Settings… / UI Themes”
  • UIThemes: Theme: added the AddressableSupport option, addressable assets can be preloaded with PreloadAddressable() or PreloadAddressable(VariationId) methods
  • UIThemes: now requires references to the Unity.Addressables and Unity.ResourceManager in the UIThemes assembly definition
  • UIThemes: now requires reference to Unity.Addressables.Editor in the UIThemes.Editor assembly definition

v1.17.13

  • improved Assembly Definitions support
  • ListView: reduced the SetData() calls for the item instances to improve performance
  • ListView: fixed bug with DataSource.Clear()
  • TreeView: improved RetainScrollPosition support

v1.17.12

  • added ScrollRectAutoScroll component: allows scrolling content during drag&drop when the pointer is in less than a specified distance from the border
  • ListView: fixed ReversedOrder for the horizontal direction
  • Drag: added the DragDelay option - how many seconds must pass from the click to the start of dragging
  • Drag: added the RedirectDragToScrollRect option - redirects the drag events to the parent ScrollRect if the drag starts before DragDelay time is passed

v1.17.11

  • ListView: scroll no more “jump” when dragging backward and item size is changed
  • Widgets Generator: fixed bug occurring when the default theme is not specified

v1.17.10

  • COMPATIBILITY-BREAKING CHANGES: ActivateInputField() method renamed to Activate() in the IInputFieldProxy interface
  • added DataLoader class to simplify loading and caching data
  • Accordion: added Interactable option
  • CenteredSlider: added Interactable and PointerButton options
  • ColorPicker: added Interactable option
  • Combobox: added Interactable option
  • Combobox: added RepositionListView option, if enabled ListView is automatically positioned to be completely visible if partially hidden by the bottom or right side of the screen
  • Combobox: added ChangeRounderCorners option, if enabled then corner radiuses will be changed to match the repositioned ListView
  • FileListViewPath: added Interactable, DisabledColor, and PointerButton options
  • ListView: added LoopedNavigation option, enabled by default, if enables/disables navigation from first to last item and vice versa
  • ListView: added MultipleSelectRequireKeys option, disabled by default, items selection will work similarly to file explorer if enabled
  • ListView: added RequireVisible option, number of visible items from current item to border on navigation
  • ListView: scroll no more “jump” when scrolling backward when the item size is changed
  • ListView: the LoopedList option now works correctly with items of variable sizes
  • ListViewPaginator: fixed bug with empty ListView and incorrectly detected page in some cases
  • OpenContextMenu: added Interactable and PointerButton options
  • Paginator: added Interactable option
  • SliderScroll: no more change Slider value if it is not interactable
  • Tabs: added TabsScroll component to toggle tabs with mouse scroll
  • TreeNode: fixed incorrect deserialization
  • UI Themes: fixed ThemeTarget bug caused by removed component
3 Likes

Hi ilih
Im trying to use the combobox widget, but i have issues with using a scaling canvas (“Scale With Screen Size”) and different aspects.
The listbox items seem to ignore the resolution scale of the canvas entirely, meaning that the added items are either too small or too large for the listview.

Replace line 245 in ListViewBase.cs
old line

                x.transform.SetParent(Container);

new line

                x.transform.SetParent(Container, false);

Perfect, Worked like a charm.

Hi ilih
Still learning from the documentation, but i encountered some minor issues though that you might want to look at:

  1. List View doesnt have clear method, Listview.Items.Clear does nothing.
  2. Listview remove worked as workaround, but that method only works with strings, the remove(listviewitem) is broken
  3. Combobox should also close if you clicked outside the list. ( standard combobox behavior )
  4. in a combobox, when selecting the currently selected, it does not close the combobox but instead deselects the item instead.

Clear method will be added with next update.
Workaround for ListView

        listView.Strings = new List<string>();

Workaround for ListViewIcons

        listViewIcons.Items = new List<ListViewIconsItemDescription>();

Misprint with access modifiers.
ListViewBase.Remove(ListViewItem) should be protected, not public.
ListViewCustom.Remove(TItem item) should be public, not protected.

Will be available with next update.

Quick fix for this
Replace line 282 in ListViewBase.cs
old line

if (IsSelected(index))

new line

if (IsSelected(index) && Multiple)

Replace line 289 in ListViewBase.cs
old line

if (selectedIndex!=-1)

new line

if ((selectedIndex!=-1) && (selectedIndex!=index))

Replace line 346 in ListViewBase.cs
old line

if (IsSelected(index))

new line

if (IsSelected(index) && Multiple)

24 Hour Deal: 50% off New UI Widgets

is this mobile (android and ios) ready?

Does the list view pool renderers and only use game objects for visible elements? or does it populate the list with game objects for every element?

Works on Android. It don’t have platform specific code, so it should works on iOS too.
You can try Android Demo (This demo may have problem with devices don’t supported non-power-of-2 textures)

For every element. Working on using game objects only for visible elements.

Are the UI widgets controller friendly?

No.

Fixed in version 1.3.1. It’s already released.

hi
does this come with (or can you add if not) a working knob (like a volume control knob).

thanks

No.

I’ll think about it.

well that’s not much good to me is it! will you add it or not? if so ill buy, if not i wont, please could you give a definitive answer?

thanks

It takes some time to research, so I’ll give answer at Tuesday or Wednesday.

How do I pragmatically (using C#) add elements (new icons and text) to the ListViewIcons widget?

Jason

Create one or more ListViewIconsItemDescription and add them with ListViewIcons.Add or ListViewIcons.Items.

using UnityEngine;
using System.Collections.Generic;
using UIWidgets;

public class TestListViewIcons : MonoBehaviour {
    [SerializeField]
    ListViewIcons listViewIcons;

    [SerializeField]
    Sprite icon;

    [SerializeField]
    List<Sprite> icons = new List<Sprite>();

    public void ListViewIconsSamples()
    {
        //Add item
        var new_item = new ListViewIconsItemDescription() {
            Icon = icon,
            Name = "item 1"
        };
        listViewIcons.Add(new_item);
       
        //Add items
        var add_items = new List<ListViewIconsItemDescription>() {
            new ListViewIconsItemDescription() {
                Icon = icons.Count > 0 ?  icons[0] : null,
                Name = "item 1"
            },
            new ListViewIconsItemDescription() {
                Icon = icons.Count > 1 ?  icons[1] : null,
                Name = "item 2"
            },
            new ListViewIconsItemDescription() {
                Icon = icons.Count > 2 ?  icons[2] : null,
                Name = "item 3"
            },
        };
        var new_items = listViewIcons.Items;
        new_items.AddRange(add_items);
        listViewIcons.Items = new_items;
       
        //Replace items
        listViewIcons.Items = add_items;
    }
}

Thank you very much for the quick response.

Jason