Использовать LabelList или MarkupList для рендеринга двух меток для каждого узла контента?

Инициализация выполняется в случае, но объявление эффективно выполняется в верхней части области. (Psuedo-code)

switch (Type)
{
string variable;

    case Type.A:
            variable = "x";
                break;
    case Type.B:
            variable = "y";
                break;
}
0
задан reid 13 July 2018 в 12:45
поделиться

1 ответ

На самом деле это довольно просто. Вам нужно будет использовать список разметки, в котором вы можете создать список пользовательских компонентов Scenegraph. Сначала создайте пользовательский компонент Scenegraph, который расширяет группу, с двумя разными узлами Label в качестве дочерних. Я бы установил поле перевода для одного узла как [x.0], в зависимости от того, насколько далеко вы хотите, чтобы эти две метки были, или вы можете использовать узел ярлыков. Затем создайте markupList и установите «itemComponentName» для настраиваемого компонента с двумя метками. Наконец, создайте Content-узел как дочерний узел списка разметки с необходимыми данными (в данном случае двумя текстовыми полями) следующим образом:

 <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+ Компоненты

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

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

1
ответ дан solthums 17 August 2018 в 12:49
поделиться
  • 1
    Спасибо за ваш ответ. это имеет большой смысл, позвольте мне попробовать это. Есть ли простой способ сделать его похожим на LabelList по умолчанию? Не то чтобы я не решаюсь делать это, так как мне, вероятно, нужно, я бы хотел, чтобы стили соответствовали друг другу. – reid 14 July 2018 в 15:57
  • 2
    Он будет похож на LabelList. Единственная проблема связана с его основной частью, поскольку вам нужно предоставить растровый фон. MarkupList имеет те же самые поля, что и LabelList, поэтому он должен быть похож, если не на тот же взгляд. – solthums 15 July 2018 в 03:59
  • 3
    Чтобы правильно окрасить выбранный узел, я выполнил эту записку, sdkdocs.roku.com/display/sdkdoc/… . Поле focusPercent interface имеет функцию onChange, которая изменяет цвет текста ярлыка, когда элемент входит / покидает область фокусировки списка " – reid 16 July 2018 в 23:31
  • 4
    – solthums 17 July 2018 в 21:28