首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何创建行数不总是相同的滚动列表?

如何创建行数不总是相同的滚动列表?
EN

Stack Overflow用户
提问于 2019-05-21 22:25:54
回答 1查看 47关注 0票数 0

我的滚动列表的行数并不总是相同的,当最后一行在滚动列表的底部完全可见时,我想禁用向下滚动。

但是现在,如果最后一行(在本例中是第13行)在列表底部完全可见,则仍然可以向下滚动。然后它看起来像第三个图像(在滚动之后),但我希望它看起来像第二个图像(在滚动之后)。

我如何做才能使您在最后一行完全可见后不能继续向下滚动?

更新:它现在可以工作了。此代码版本使用可变滚动速度。

我的代码:

代码语言:javascript
复制
//Creating the scroll list: 

public List<Vector2> ScrolllistInitialRowPosYList = new List<Vector2>();
public List<Vector2> ScrolllistRowPosYList = new List<Vector2>();
Microsoft.Xna.Framework.Rectangle ScrollPointRectangle, tappRect, ScrollRectangle;
int ScrollLimitTopPosY = 200, ScrollLimitBottomPosY = 400, RowHeight = 60, ScrollPointStartPosY;
float ScrollAreaHeight, HeightallRows, ScrollSpeed;

ScrollPointStartPosY = ScrollLimitTopPosY;
ScrollPointRectangle = new Microsoft.Xna.Framework.Rectangle(500, ScrollPointStartPosY, ScrollPointSprite.Width, ScrollPointprite.Height);
tappRect = new Microsoft.Xna.Framework.Rectangle(-150, -100, 10, 10);
ScrollRectangle = new Microsoft.Xna.Framework.Rectangle(500, 300, ScrollRectangleSprite.Width, ScrollRectangleSprite.Height);

int FirstRowPosY = 0;
int NumberofRows = 13;
ScrollAreaHeight = ScrollLimitBottomPosY - ScrollLimitTopPosY;
int ListViewportHeight = 6 * RowHeight;
HeightallRows = NumberofRows * RowHeight - ListViewportHeight;

ScrollSpeed = HeightallRows / ScrollAreaHeight;

for (int i = 0; i <= NumberofRows - 1; i++)
{
     ScrolllistInitialRowPosYList.Add(new Vector2(500, FirstRowPosY));
     ScrolllistRowPosYList.Add(new Vector2(500, FirstRowPosY));                     
     FirstRowPosY += RowHeight;
}

//Updating gestures:

                    case GestureType.FreeDrag:
                    if (tappRect.Intersects(ScrollRectangle))
                    {
                        tappRect = new Microsoft.Xna.Framework.Rectangle((int)gs.Position.X, (int)gs.Position.Y, 10, 10);

                            if (gs.Delta.Y > 0)
                            {
                             if (ScrollPointRectangle.Y >= ScrollLimitTopPosY + 2)
                                ScrollPointRectangle = new Microsoft.Xna.Framework.Rectangle(500, ScrollPointRectangle.Y - 2, ScrollPointSprite.Width, ScrollPointSprite.Height);
                          else
                                ScrollPointRectangle = new Microsoft.Xna.Framework.Rectangle(500, ScrollLimitTopPosY, ScrollPointSprite.Width, ScrollPointSprite.Height);
                            }
                            else
                            {
                                if (gs.Delta.Y < 0)
                                {
                                    if (ScrollPointRectangle.Y <= ScrollLimitBottomPosY - 2)
                                      ScrollPointRectangle = new Microsoft.Xna.Framework.Rectangle(500, ScrollPointRectangle.Y + 2, ScrollPointSprite.Width, ScrollPointSprite.Height);
                                    else
                                      ScrollPointRectangle = new Microsoft.Xna.Framework.Rectangle(500, ScrollLimitBottomPosY, ScrollPointSprite.Width, ScrollPointSprite.Height);
                                }
                            }
                    }
                    break;

//Updating the scroll list after someone srolled up or down:

        for (int i = 0; i <= ScrolllistRowPosYList.Count - 1; i++)
        {
            int ScrollPosYCurrent = ScrollPointRectangle.Y;

            int ScrollPosYDifference = ScrollPosYCurrent - ScrollPointStartPosY;
            float RowPosYDifference = ScrollSpeed * ScrollPosYDifference;

            int RowInitialPosY = (int)ScrolllistInitialRowPosYList[i].Y;

            float RowCurrentPosY = RowInitialPosY - RowPosYDifference;

            ScrolllistRowPosYList[i] = new Vector2(ScrolllistRowPosYList[i].X, RowCurrentPosY);
        }
EN

回答 1

Stack Overflow用户

发布于 2019-05-21 23:13:24

  1. ,你可以不画它们。
  2. 你可以有两个List<row>变量,一个存储所有的行,另一个只存储应该查看和交互的行。

编辑:I missread。忘记我写的第一点。使用两个列表,如第二点所示。滚动时,检查最后可见的行是否为“所有行”列表中的最后一行。如果是这样,请不要滚动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56240460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档