具有多行(自动换行)项目渲染器的列表 - 如何滚动到底部?有测试用例和截图

2023-12-01

在 Flex 4 Web 应用程序中,我尝试使用Spark.Components.List用于聊天(出于各种原因 - 它已经在 Flex 移动应用程序中对我来说效果很好),但是因为我使用可以多行的项目渲染器(即换行太长的行),所以我遇到了问题,我无法滚动通过调用其列表到其底部ensureIndexIsVisible method:

enter image description here

我准备了一个非常简单的测试。这些只是 2 个文件,当您将它们放入 Flash Builder 中的新 Flex 项目时,它们将立即起作用 -

enter image description here

MyApp.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"
    applicationComplete="init()">
    
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayList;
            
            private static const MONTHS:ArrayList = new ArrayList([
                "1 January is a beautyful month", 
                "2 February is a very very very very very very very very very very very very very very very beautyful month", 
                "3 March is a beautyful month", 
                "4 April is a beautyful month", 
                "5 May is a beautyful month", 
                "6 June is a beautyful month", 
                "7 July is a beautyful month", 
                "8 August is a beautyful month", 
                "9 September is a beautyful month", 
                "10 October is a beautyful month", 
                "11 November is a beautyful month",
                "12 December is a beautyful month"
            ]);
            
            private function init():void {
                myList.ensureIndexIsVisible(MONTHS.length - 1); 
            }
        ]]>
        
    </fx:Script>
    
    <s:List id="myList"
            horizontalCenter="0"
            verticalCenter="0"
            width="100"
            height="300"
            dataProvider="{MONTHS}"
            itemRenderer="MyRenderer"
            horizontalScrollPolicy="off">
        
        <s:layout>
            <s:VerticalLayout variableRowHeight="true" 
                              horizontalAlign="justify"/>
        </s:layout>
    </s:List>
</s:Application>

我的渲染器.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark"
    autoDrawBackground="false">
    
    <fx:Script> 
        <![CDATA[    
            [Bindable]
            public var myColor:uint = 0xFFFFFF;

            override public function set data(value:Object):void {
                var label:String = value as String;
                labelDisplay.text = label; 
                
                if (label.indexOf("June") >= 0)
                    myColor = 0xFFEEEE;
                else if (label.indexOf("July") >= 0)
                    myColor = 0xEEFFEE;
                else if (label.indexOf("August") >= 0)
                    myColor = 0xEEEEFF;
                else 
                    myColor = 0xFFFFFF;
            } 
        ]]> 
    </fx:Script>
    
    <s:Rect width="100%" height="100%">
        <s:fill>
            <s:SolidColor color="{myColor}" />
        </s:fill>
    </s:Rect>
    
    <s:Label id="labelDisplay" 
             width="100%"
             left="4" 
             top="4" />
</s:ItemRenderer>

请看一下并告诉我如何将列表滚动到最底部。

我应该以某种方式使用myList.dataGroup为了那个原因?或者也许是layout.verticalScrollPosition?

我也尝试过callLater(myList.ensureIndexIsVisible, [MONTHS.length - 1])但这没有帮助。


我自己在 Flexponential 博客中找到了答案滚动到 Spark 列表的底部:

    public static function scrollToBottom(list:List):void {
        // update the verticalScrollPosition to the end of the List
        // virtual layout may require us to validate a few times
        var delta:Number = 0;
        var count:int = 0;

        while (count++ < 10) {
            list.validateNow();
            delta = list.layout.getVerticalScrollPositionDelta(NavigationUnit.END);
            list.layout.verticalScrollPosition += delta;

            if (delta == 0)
                break;
        }
    }           
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多行(自动换行)项目渲染器的列表 - 如何滚动到底部?有测试用例和截图 的相关文章

  • 如何在Android Air应用程序中通过as3打开Instagram页面?

    我想通过单击应用程序中的按钮来打开 Instagram 页面 例如 Instagram 应用程序中的 instagram mypage 代码是什么 mybuttun addEventListener MouseEvent CLICK ope
  • 需要澄清应用程序域

    我需要对这个主题进行一些澄清 因为我刚刚遇到将 swf 加载到重用加载器对象中的问题 假设我有 3 个 SWF 主文件 swfchildA swfchildB swf Main swf 中有一个可重用的加载程序对象 myloader loa
  • 有什么方法可以分析 Flex 中内置的 SWF 的大小吗?

    我的 Flex 应用程序看起来比应有的要大 里面有很多代码 但资产不多 而且看起来很大 但我不知道如何弄清楚空间的去向 我知道 link report 选项 但它只给出外部链接库类的大小 我非常有兴趣查看应用程序中所有类和资源大小的报告 如
  • Actionscript 3主类是根,但不允许动画虚拟相机

    我最近开始使用 Actionscript 3 学习 Animate CC 我正在尝试使用 Animate 的 虚拟相机 功能 为我提供一个可以平移 旋转和缩放游戏的相机 当根没有子类时 很容易实现 Camera 例如 您可以在屏幕上放置一个
  • ActionScript 3.0 中缺少运算符重载

    我在 ActionScript 中最怀念的事情之一是缺少运算符重载 特别是 我通过在我的类中添加 Compare 方法来解决这个问题 但这在很多情况下没有帮助 比如当你想使用内置字典之类的东西时 有没有好的方法来解决这个问题 Nope 但添
  • flash/flex:渐进式下载与 rtmp

    我试图理解并真正确定何时在 Flex flash 中使用渐进式下载与 rtmp 看来主要的一点是 rtmp 不与 http 一起提供服务 而渐进式下载则由 http 提供 由于它不是 rtmp 因此资源受到保护 因为无法从 swf 外部连接
  • as3 事件 - 类型强制失败?

    我正在将事件从孩子发送到父母 swf 它工作正常 直到我使用预加载器 swf 加载父级 然后父级停止从子级获取事件 我现在收到此错误 TypeError Error 1034 Type Coercion failed cannot conv
  • 将应用程序状态保存在磁盘或其他位置,以便用户稍后访问它

    In 弹性构建器 4 5我正在做一个像这样的项目cacoo http www cacoo com 我想保存diagrams display object ui components text 在将应用程序关闭到应用程序之后我无法访问的某个地
  • 如何从 Flex Spark 列表的 DataProvider 对象获取其 ItemRenderer?

    在 Flex 中 我可以创建一个 ItemRenderer 来表示列表 DataProvider 中的每个项目 但如何通过 DataProviders 对象访问 ItemRenderer 的实例 就像是myList getItemRende
  • 从 Air Native 扩展返回结构

    是否可以从本机代码返回结构 返回 int 或 boolean 相对简单 但是如何将更复杂的结构返回给动作脚本 您可以返回任何可以在本机代码中表示为 FREObject 的对象 这实际上包括任何 Actionscript 类或 Actions
  • 使用多个模块时优化 Flex

    我有一个 Flex 应用程序 加载时间非常重要 消费者网站 我希望能够在屏幕上显示一些内容 然后允许根据需要加载其他模块 我面临的问题是所有模块的总和比我将所有组件包含在单个 swf 文件中要大得多 原因很明显 例如 访问 Web 服务所需
  • Random.Next() 的 Actionscript 3 实现

    我想知道 AS 3 中是否有很好的 Random Next 实现 基本上想要生成一系列给定种子的随机数 有时 最小和最大限制 类似于 C System Random 类 Random random new Random return ran
  • 如何在动作脚本 3 中设置/访问外部 swf 文件的动态文本字段?

    我正在处理一个 fla 文件 其中添加了一个 swf 文件 我如何在该 swf 文件的动态文本上设置文本 有没有直接设置文本的方法 我不想在 url 中作为参数传递 我试过这样 var rq URLRequest new URLReques
  • 在类之间调度事件

    我有一个自定义事件类 public class FFTDrawEvent extends Event public static const DRAW EVENT String drawEvent private var param Arr
  • 正确地将 flash.utils.Dictionary 序列化为 SharedObject

    我的 Flex 项目中有一个名为 HashMap 的便利集合类 它本质上是 flash utils Dictionary 的包装器 带有一堆便利方法和添加的 同步的 ArrayCollection 以便我可以将 HashMap 传递给需要的
  • 带有行号列的 Flex DataGrid

    我想扩展 DataGrid 组件 以便有一个 只读 列用于显示行号 就像您在电子表格中看到的那样 我看到这篇文章http www cflex net showFileDetails cfm ObjectID 735 http www cfl
  • 有没有一个工具可以自动追踪未使用的代码

    我目前有 6 个不同的 Flex 应用程序 小部件 在主页上运行 它们都依赖于一个公共库项目 我目前正在非常大幅度地清理代码库 并且很难以这种方式保持概览 特别是因为我继承了代码库 有谁知道有一个工具可以自动通知我任何死代码 Cheers
  • 将数组从 Flash (AS3) 发送到 JavaScript

    是否可以使用ExternalInterface 调用将数组从Flash AS3 发送到JavaScript 我目前正在 Flash 内的 foreach 循环中多次调用一个函数 但速度太快 JavaScript 无法跟上 我的想法是创建一个
  • 使用jquery调用AS3外部接口

    我正在使用ExternalInterface 调用嵌入在html 页面中的Flash 应用程序 以下代码工作正常 我正在使用按钮进行测试 document ready function button click function var a
  • 具有可变颜色线的柔性折线图

    我有一个相当简单的需求来创建折线图 我想要绘制图表的数据基于单个每日数据点 xml数据示例

随机推荐

  • 将字符串中的所有字母加 1 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 当我输入 abc 我想得到 bcd 作为输出 所以我想要A to be B and B to be C等等直到Z这将是A 那么我该怎么做呢 我一点也不知道 您可以使用transl
  • 如何修改 Elastislide 使其无限循环

    我一直在寻找一种图像轮播 它可以一次显示多个图像 具有响应能力并且可以无限循环 Elastislide 似乎是最合适的 http tympanus net Development Elastislide index2 html 我能找到的唯
  • 未捕获的类型错误:无法调用未定义的方法“请求”

    在我的 JavaScript 代码中 我不断收到以下错误 Uncaught TypeError Cannot call method request of undefined 我的 JavaScript 如下 任何帮助将不胜感激 myJso
  • 如何以(线程)安全的方式跟踪 TPL 管道中的故障项

    我正在使用 TPL 管道设计和 Stephen Cleary 的管道设计尝试库简而言之 它包装了值 异常并将其沿着管道浮动 因此 即使是在处理方法中抛出异常的项目 最后当我await resultsBlock Completion have
  • Pyplot:绘制一侧带有刻度的曲线

    我可以使用 matplotlib pyplot 中的plot 函数来绘制这样一侧有刻度的曲线吗 Upgrade根据答案here我可以扩展这个例子 def f x return x x np exp x x def get parameter
  • Ubuntu rake 中止了! NameError:未初始化的常量 ActionDispatch::XmlParamsParser

    我正在尝试在 16 04 ubuntu 的机器上安装 redmine 的插件 现在我正在尝试安装敏捷插件 我收到了有关如何安装插件的官方文档 我按照逐步安装的步骤进行操作 但遇到了错误 重要的 我正在使用 Ruby 2 3 1 Steps
  • NextJS 环境变量不起作用

    我已经研究这个问题至少一个小时了 到目前为止我还很困惑 也许我不理解文档或媒体文章 但是 据我了解 NextJS 我已经安装了最新版本 提供了一个内置的环境变量解决方案 所以 没有必要dotenv包裹 由于 NextJS 已设置 我需要做的
  • 我无法使用 subclipse 提交 .so 库文件

    这是一个 Android 应用程序 我在文件夹中添加了一个 so 本机库 库 armeabi libc so 但是 我无法将其提交到存储库 当我右键单击 提交 时 没有任何更改反映我添加了 so 本机库文件 我该如何解决这个问题 好的 我找
  • 向远程 WebDriver 服务器发送 URL 请求 - Chrome

    我正面临着向远程 WebDriver 服务器发送 URL 请求在 Chrome 中执行 selenium 脚本时出错 我使用 Selenium 与 C 和最新版本的 Chrome 驱动程序 Chrome 66 0 3359 181 和 Se
  • Swift 位数组到字节数组(UInt8 数组)

    我有位数组 var bits Bit 以及如何将其转换为字节数组 var bytes UInt8 例如 我有 280 位 字节数组中应该有 35 个 UInt8 我可以想到的解决方案是 我采用 8 位并检查第一个是否为真 第二个是否为真 等
  • 填充 os.Stdin 作为从中读取的函数

    如何在测试中填写 os Stdin 以使用扫描仪读取其中的函数 我使用以下函数通过扫描仪请求用户命令行输入 func userInput error scanner bufio NewScanner os Stdin println Wha
  • 重叠/叠加多个内嵌图像

    我有一个尝试重叠的图像列表 以便它们看起来与此类似 My code avatar img border radius 50 position relative left 5px z index 1 div class avatars spa
  • Powershell 更换周期

    谁能告诉我他们是否认为这个 Powershell 脚本有问题 Dir where extension eq txt Rename Item NewName name replace 对于当前目录中的每个文本文件 我尝试用连字符替换文件名中的
  • 在 JPA 标准查询的“having”子句中使用“case...when...then...else...end”构造

    以下条件查询计算不同产品组的评分平均值 CriteriaBuilder criteriaBuilder entityManager getCriteriaBuilder CriteriaQuery
  • BackgroundWorker 线程和 Timer 逻辑

    我一直在努力为我的计时器和后台工作线程找到正确的逻辑 尽管我读了很多书 但我并没有完全理解整个系统 以下是相关代码的摘录 我的投票按钮 private void pollStart Click object sender EventArgs
  • 组合 3 个或更多数组 (php) [重复]

    这个问题在这里已经有答案了 快速示例 array 1 1 2 3 array 2 a b c array 3 white red blue 我需要一个像这样的数组 array 4 1 a white 2 b red 3 c blue 你的意
  • 如何将数据库中的数据直接填充到Jtable中

    我已经显示 Jtable 取决于数据库中的特定列 jtable 中的最后两列是图像字段 我如何动态更改列而不影响最后两列 请告诉我 该怎么做 Use Vector from java util Collection 请参阅此示例 http
  • 复制行及其所有“子项”

    我有一个名为的 MySQL 表employees 还有另一张桌子叫shifts这与employees by the employeeId列和一对多的关系 我想克隆一名员工及其班次INSERT 所以employee行被克隆 并且shifts全
  • 如何显示标签“ErrorProvider1 上的错误”

    Goal 每当出现错误时 我想显示放入标签的 Error on ErrorProvider1 属性中的文本 请参阅下面的标签属性 我尝试将红色矩形中的文本显示到我的 ErrorProvider1 中SetError control valu
  • 具有多行(自动换行)项目渲染器的列表 - 如何滚动到底部?有测试用例和截图

    在 Flex 4 Web 应用程序中 我尝试使用Spark Components List用于聊天 出于各种原因 它已经在 Flex 移动应用程序中对我来说效果很好 但是因为我使用可以多行的项目渲染器 即换行太长的行 所以我遇到了问题 我无