使用LabelList或MarkupList为每个内容节点渲染两个标签?

时间:2018-07-13 12:45:34

标签: roku brightscript scenegraph

我正在寻求实现LabelList或MarkupList(如果需要),其中内容节点包含两个标签(两个标题,缺少一个更好的术语)。

我注意到roku的默认设置页面上的许多内容节点都有两个呈现的标签。

类似这样的东西:

----------------------------------------
Label 1                          Label 2
----------------------------------------
Label 1                          Label 2
----------------------------------------
Label 1                          Label 2
----------------------------------------

1 个答案:

答案 0 :(得分:1)

执行此操作实际上非常简单。您将需要使用标记列表,您可以在其中创建自定义Scenegraph组件的列表。首先,创建一个扩展了Group的自定义Scenegraph组件,并将两个不同的Label节点作为子级。我将一个节点的转换字段设置为[x.0],具体取决于您希望两个标签之间的间距,也可以使用“标签节点”。然后,创建一个markupList,并将“ itemComponentName”设置为具有两个标签的自定义组件。最后,使用以下必要数据(在本例中为两个文本字段),将内容节点创建为标记列表的子节点:

 <MarkupList
        id = "MarkupList"
        itemComponentName = "<INSERT COMPONENT ITEM HERE>"
        numRows="3" >

        <ContentNode id = "ContentNode" role = "content" >
            <ContentNode
              text1="Label 1"
              text2="Label 2"/>
            <ContentNode
              text1="Label 1"
              text2="Label 2"/>
            <ContentNode
              text1="Label 1"
              text2="Label 2"/>
        </ContentNode>

      </MarkupList>`

您可能不得不使用addFields()方法来添加标签的内容。

以下是Roku SDK的一些资源: 创建自定义组件-https://sdkdocs.roku.com/display/sdkdoc/Creating+Custom+Components

MarkupList-https://sdkdocs.roku.com/display/sdkdoc/MarkupList

addField()-https://sdkdocs.roku.com/display/sdkdoc/ifSGNodeField#ifSGNodeField-addFields(fieldsasObject)asBoolean