В ОС Tizen есть хороший стиль genlist 1text
. Это создает эффект увеличения в списке, то есть: верхний и нижний элементы меньше, чем средний:
И они плавно увеличиваются по мере того, как пользователь перемещает их в середину.
Я хотел настроить стиль элемента списка genlist, поэтому я поискал в Интернете и создал myownlistitem
.
Моя цель - сделать текст красным сразу, когда элемент выделен (т.е. перенесен в середину). Чтобы быть уверенным, что программа использует мой макет, я по умолчанию сделал текст фиолетовым:
group { "elm/genlist/item/myownlistitem/default";
data.item: "texts" "elm.text";
parts {
rect { "elm.spacer";
scale: 1;
mouse_events: 1;
desc { "default";
min: 0 100;
}
}
text { "elm.text";
desc { "default";
color: 255 0 255 255; // to be purple by default
text.size: 28;
}
desc { "highlighted";
inherit: "default";
color: 255 0 0 255; // to be red
}
}
}
programs {
program { name: "myownlistitem_highlighted";
signal: "elm,state,highlighted";
source: "elm";
action: STATE_SET "highlighted" 0;
target: "elm.text"
}
program { name: "myownlistitem_unhighlighted";
signal: "elm,state,unhighlighted";
source: "elm";
action: STATE_SET "default";
target: "elm.text"
}
}
}
Это очень приятно, работает по назначению:
Но, как видите, эффект увеличения 1text
утерян.
Поэтому я пошел еще дальше и снова изменил класс элементов списка на 1text
, а в listItemClass->func.content_get
:
Evas_Object* UI::getListItemContent(void* data, Evas_Object* obj, const char* part) {
Evas_Object* item = elm_layout_add(obj);
elm_layout_file_set(mylayout.edj, "elm/genlist/item/myownlistitem/default");
elm_object_part_text_set(item, "elm.text", "Demo");
return item;
}
Это действительно работает, эффект лупы остался:
Но мой макет больше не получает сигналы highlighted
и unhighlighted
. Я пробовал много вещей из кода C (*_signal_callback_add
), но больше не мог получать эти сигналы.
Как я могу получить эти сигналы в своем макете при его применении, чтобы сохранить эффект лупы?
highlighted
как событие genlist, но это то же самое, что иselected
, которое вызывается только после того, как я щелкнул или коснулся самого элемента. - person Daniel   schedule 27.01.2021