Exemplo n.º 1
0
        /// <summary>
        /// 强制重新布局
        /// </summary>
        public void Relayout()
        {
            float allHeight = 0;

            CommonListItem li     = null;
            float          startY = 0;

            for (int i = 0; i < List.Count; i++)
            {
                li = GetItem(i);
                if (li.visible)
                {
                    li.itemRectTransform.anchoredPosition = new Vector2(li.itemRectTransform.anchoredPosition.x, -startY);
                    startY    += li.itemRectTransform.sizeDelta.y;
                    allHeight += li.itemRectTransform.sizeDelta.y;
                    if (!li.itemObject.activeSelf)
                    {
                        li.itemObject.SetActive(true);
                    }
                }
                else if (li.itemObject.activeSelf)
                {
                    li.itemObject.SetActive(false);
                }
            }

            rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, allHeight);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 设置条目选中状态
        /// </summary>
        /// <param name="item">条目</param>
        /// <param name="selected">是否选中</param>
        public void SetItemSelected(CommonListItem item, bool selected)
        {
            item.selected = selected;
            if (item.selected)
            {
                if (itemCanMultiSelect)
                {
                    if (!currentSelectedItems.Contains(item))
                    {
                        currentSelectedItems.Add(item);
                    }
                }
                else
                {
                    currentSelectedItems.Clear();
                    currentSelectedItems.Add(item);
                }

                item.backgroundImage.sprite = itemBackgroundSelected;
            }
            else
            {
                currentSelectedItems.Remove(item);
                item.backgroundImage.sprite = itemBackgroundNormal;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 添加条目
        /// </summary>
        /// <returns></returns>
        public CommonListItem AddItem()
        {
            CommonListItem newItem = new CommonListItem();

            newItem.itemObject                       = GameCloneUtils.CloneNewObjectWithParent(ItemPrefab, rectTransform.transform);
            newItem.itemRectTransform                = newItem.itemObject.GetComponent <RectTransform>();
            newItem.backgroundImage                  = newItem.itemObject.AddComponent <Image>();
            newItem.backgroundImage.type             = Image.Type.Sliced;
            newItem.backgroundImageButton            = newItem.itemObject.AddComponent <Button>();
            newItem.backgroundImageButton.transition = Selectable.Transition.SpriteSwap;
            newItem.backgroundImage.sprite           = itemBackgroundNormal;
            newItem.visible  = true;
            newItem.selected = false;
            SpriteState spriteState = new SpriteState();

            spriteState.highlightedSprite = itemBackgroundHover;
            spriteState.selectedSprite    = itemBackgroundSelected;
            spriteState.pressedSprite     = itemBackgroundPressed;
            spriteState.disabledSprite    = itemBackgroundPressed;

            newItem.backgroundImageButton.spriteState = spriteState;

            EventTriggerListener.Get(newItem.itemObject).onClick = (g) => OnItemClicked(newItem);
            List.Add(newItem);
            needRelayout = 10;
            return(newItem);
        }
Exemplo n.º 4
0
 /// <summary>
 /// 移除条目
 /// </summary>
 /// <param name="item">条目实例</param>
 public void RemoveItem(CommonListItem item)
 {
     List.Remove(item);
 }
Exemplo n.º 5
0
 private void OnItemClicked(CommonListItem item)
 {
     SetItemSelected(item, !item.selected);
 }