修改RecyclerView
This commit is contained in:
parent
52bc0b3319
commit
bbee53ccf6
@ -7,6 +7,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
public class RecyclerView : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Direction direction;
|
||||
|
||||
public Direction Direction
|
||||
{
|
||||
get => direction;
|
||||
@ -14,6 +15,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
|
||||
[SerializeField] private Alignment alignment;
|
||||
|
||||
public Alignment Alignment
|
||||
{
|
||||
get => alignment;
|
||||
@ -21,6 +23,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
|
||||
[SerializeField] private Vector2 spacing;
|
||||
|
||||
public Vector2 Spacing
|
||||
{
|
||||
get => spacing;
|
||||
@ -28,6 +31,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
|
||||
[SerializeField] private Vector2 padding;
|
||||
|
||||
public Vector2 Padding
|
||||
{
|
||||
get => padding;
|
||||
@ -35,6 +39,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
|
||||
[SerializeField] private bool scroll;
|
||||
|
||||
public bool Scroll
|
||||
{
|
||||
get => scroll;
|
||||
@ -42,6 +47,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
|
||||
[SerializeField] private bool snap;
|
||||
|
||||
public bool Snap
|
||||
{
|
||||
get => snap;
|
||||
@ -49,6 +55,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
|
||||
[SerializeField, Range(1f, 50f)] private float scrollSpeed = 7f;
|
||||
|
||||
public float ScrollSpeed
|
||||
{
|
||||
get => scrollSpeed;
|
||||
@ -56,6 +63,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
|
||||
[SerializeField, Range(10f, 50f)] private float wheelSpeed = 30f;
|
||||
|
||||
public float WheeelSpeed
|
||||
{
|
||||
get => wheelSpeed;
|
||||
@ -63,6 +71,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
|
||||
[SerializeField] private ViewHolder[] templates;
|
||||
|
||||
public ViewHolder[] Templates
|
||||
{
|
||||
get => templates;
|
||||
@ -76,6 +85,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
|
||||
private int startIndex, endIndex;
|
||||
private int currentIndex;
|
||||
|
||||
public int CurrentIndex
|
||||
{
|
||||
get => currentIndex;
|
||||
@ -85,6 +95,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
public bool CanScroll => true;
|
||||
|
||||
private RectTransform content;
|
||||
|
||||
public RectTransform Content
|
||||
{
|
||||
get
|
||||
@ -93,6 +104,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
{
|
||||
content = transform.GetChild(0).GetComponent<RectTransform>();
|
||||
}
|
||||
|
||||
return content;
|
||||
}
|
||||
}
|
||||
@ -118,6 +130,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
ConfigScroller();
|
||||
}
|
||||
}
|
||||
|
||||
return scroller;
|
||||
}
|
||||
}
|
||||
@ -136,6 +149,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
scrollbar.gameObject.AddComponent<ScrollbarEx>().OnDragEnd = OnScrollbarDragEnd;
|
||||
}
|
||||
}
|
||||
|
||||
return scrollbar;
|
||||
}
|
||||
}
|
||||
@ -236,6 +250,14 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
}
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
for (int i = 0; i < templates.Length; i++)
|
||||
{
|
||||
templates[i].gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
viewProvider?.Dispose();
|
||||
@ -248,6 +270,7 @@ namespace AlicizaX.UI.RecyclerView
|
||||
{
|
||||
scroller.Position = 0;
|
||||
}
|
||||
|
||||
if (scrollbar != null)
|
||||
{
|
||||
scrollbar.SetValueWithoutNotify(0);
|
||||
@ -330,12 +353,8 @@ namespace AlicizaX.UI.RecyclerView
|
||||
else
|
||||
{
|
||||
Scrollbar.gameObject.SetActive(true);
|
||||
Scrollbar.direction = direction == Direction.Vertical ?
|
||||
Scrollbar.Direction.TopToBottom :
|
||||
Scrollbar.Direction.LeftToRight;
|
||||
Scrollbar.size = direction == Direction.Vertical ?
|
||||
Scroller.ViewSize.y / Scroller.ContentSize.y :
|
||||
Scroller.ViewSize.x / Scroller.ContentSize.x;
|
||||
Scrollbar.direction = direction == Direction.Vertical ? Scrollbar.Direction.TopToBottom : Scrollbar.Direction.LeftToRight;
|
||||
Scrollbar.size = direction == Direction.Vertical ? Scroller.ViewSize.y / Scroller.ContentSize.y : Scroller.ViewSize.x / Scroller.ContentSize.x;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,8 @@ namespace AlicizaX.UI.RecyclerView
|
||||
public string Name { get; set; }
|
||||
public int Index { get; set; }
|
||||
|
||||
public bool ChoiseState { private set; get; }
|
||||
|
||||
public Vector2 SizeDelta => RectTransform.sizeDelta;
|
||||
|
||||
public virtual void OnStop()
|
||||
@ -42,9 +44,17 @@ namespace AlicizaX.UI.RecyclerView
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void BindChoiceState(bool state)
|
||||
protected internal void BindChoiceState(bool state)
|
||||
{
|
||||
if (ChoiseState != state)
|
||||
{
|
||||
ChoiseState = state;
|
||||
OnBindChoiceState(state);
|
||||
}
|
||||
}
|
||||
|
||||
protected internal virtual void OnBindChoiceState(bool state)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user