Року: показать название канала каждого элемента под логотипом канала на экране сетки
Как мы можем отобразить название канала каждого элемента в каждой строке сетки? Я могу отображать только когда элемент находится в фокусе, но я хочу отображать название канала при загрузке всего списка строк
1 ответ
Чтобы создать пользовательский компонент для каждого элемента в RowList, вам потребуется создать новый XML-файл, который определяет элемент и имеет функцию для заполнения каждого элемента на основе переданного Content Node. В вашем случае я бы использовал LayoutGroup Компонент Scenegraph для объединения как изображения, так и текста. Кроме того, вам необходимо включить поле интерфейса itemContent, которое будет передаваться при рендеринге компонента в качестве узла содержимого. Вот пример кода для определения элемента строки:
<?xml version="1.0" encoding="utf-8" ?>
<component name="RowListItem" extends="Group">
<interface>
<field id="itemContent" type="node" onChange = "showcontent"/>
</interface>
<script type="text/brightscript" >
<![CDATA[
function init() as void
m.itemImage = m.top.findNode("itemImage")
m.itemText = m.top.findNode("itemText")
m.itemRectangle = m.top.findNode("itemRectangle")
end function
]]>
</script>
<children>
<LayoutGroup layoutDirection="vert" vertAlignment="top" itemSpacings="20" translation="[0,0]" >
<Rectangle
id="itemRectangle"
color="#A9A9A9"
opacity="0.9"
width="400"
height="350"
translation="[0,0]" >
<Poster
id="itemImage"
translation="[0,0]"
width="400"
height="180" />
<Label
id="itemText"
color="0xFFFFFF"
horizAlign="left"
translation="[10,200]"
font="font:MediumSystemFont"
width="400"
height="65" />
</Rectangle>
</LayoutGroup>
</children>
</component>
Вам также потребуется настроить функцию для назначения текста и логотипа каждому компоненту на основе ContentNode, отправляемого через RowList. Наконец, вам нужно включить следующее поле в определение вашего компонента RowList в файле XML:
itemComponentName="RecommendedRowListItem"
Надеюсь это поможет!