#tizen #tizen-native-app
#tizen #tizen-native-app
Вопрос:
В ОС Tizen есть приятный стиль 1text
genlist . Это создает эффект «увеличителя» в списке, т.Е. Верхний и нижний элементы меньше, чем тот, что посередине:
И они плавно увеличиваются, когда пользователь перемещает их в середину.
Я хотел настроить стиль элемента 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
and unhighlighted
. Я перепробовал много вещей из C code ( *_signal_callback_add
), но больше никогда не мог получать эти сигналы.
Как я могу получить эти сигналы в своем макете при его применении, чтобы сохранить эффект увеличения?
Комментарии:
1. Также пробовалось
highlighted
как событие genlist, но это то же самое,selected
что вызывается только после того, как я нажал или коснулся самого элемента.
Ответ №1:
Эффект лупы, он же эффект рыбьего глаза, предназначен для внутренней функции. он не должен был быть общедоступным для разработчиков приложений, поэтому у tizen нет официального способа включить / выключить его на стороне пользователя.
но внутри edc есть некоторые данные, которые включают / выключают этот эффект в стилях каждого элемента, которые могут быть изменены в будущем, поскольку я сказал, что это неофициально.
посмотрите стиль 1text,
group { "elm/genlist/item/1text/default";
data.item: "flips" "elm.flip.icon elm.flip.content";
data.item: "texts" "elm.text";
data.item: "focus_bg" "on";
data.item: "contents" "elm.swallow.center_check";
// 'vi_effect' data can determine fisheye effect.
// 'on' : enable item resize effect depending on their distance from center position.
// 'off': disable the effect and item size will not changed by it's position. this is default value.
data.item: "vi_effect" "on";
//'highlight_direct' do not use transition at item highlight
data.item: "highlight_direct" "on";
//
vi_effect и highlight_direct data.item — это то, что вы хотите.
обычно изменить текст элемента очень просто, используя html-тег в строке текстового блока, но genlist пока не отправляет обратный вызов события выделения, так что вы можете применить этот способ.
Комментарии:
1. Вы хотите сказать, что если я создам свой собственный
elm/genlist/item/myown/default
стиль элемента и помещуdata.item: "vi_effect" "on";
его, он будет использовать эффект рыбьего глаза?2. собственный ответ: НЕТ. если я добавлю vi_effect, это не создаст стиль «рыбий глаз».
3. еще один вопрос — поскольку вы, похоже, единственный здесь, у кого есть ответы: могу ли я каким-то образом иметь более 3 элементов в genlist (реализованный отображаемый)?