功能的重点在于如何正确的通过传入的页码数据计算要显示出来的页码。
所以说首先要确定页码的总数,和页面上最多显示多少个按钮(包括 ‘…’)
在这里作者就不全部列出来了,只展示一个核心方法,
public void GetShowPage(List<int> show, int page,int number=0)
{
if (number==0)
show.Add(page);
if (page- number > 1)
show.Insert(0, page - (1+ number));
if (page + number < PageNumber)
show.Add(page + (1 + number));
if (show.Count < ShowLength)
GetShowPage(show, page, number + 1);
else
{
if (show.Count > 2 && show[0] > 1)
{
show[0] = 1;
show[1] = -1;
}
if (show.Count > 2 && show[show.Count - 1] < PageNumber)
{
show[show.Count - 1] = PageNumber;
show[show.Count - 2] = -1;
}
}
}
PageNumber 代表页码总数 ShowLength 代表页码最多显示多少个按钮 ------单数最好
执行完毕后 List 中 0以上的 就是正常显示的页码,如果出现-1 则表示当前节点需要显示‘…’
此方法只是作者的个人习惯,并不代表是最简单的方法。
在贴一个初始值的方法吧
public void Create(int pagenumber,System.Action<int> flippageEvent)
{
CurrentPage = -1;
Field.text = "";
FlipPageEvent = flippageEvent;
PageNumber = pagenumber<0?0:pagenumber;
ShowLength = PageNumber < MaxShowLength ? PageNumber : MaxShowLength;
PageMenuEvent(ShowLength > 0 ? 1 : 0);
}
|