#tizen #tizen-native-app
#tizen #tizen-native-app
Вопрос:
Я создал неопределенную панель прогресса для Tizen 4.0, используя родной язык C.:
Evas_Object* progressbar = elm_progressbar_add(parent);
evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_style_set(progressbar, "process/small");
elm_progressbar_pulse_set(progressbar, EINA_TRUE);
elm_progressbar_pulse(progressbar, EINA_TRUE);
elm_object_part_content_set(parent, "elm.progress", progressbar);
evas_object_show(progressbar);
Вот «официальная» документация: https://docs.tizen.org/application/native/guides/ui/efl/wearable/component-progressbar .
Если я выполню приведенный выше код на своем эмуляторе (x86, Tizen 4.0), я получу ожидаемый результат:
Однако при запуске на часах он просто не запускается:
Что не так с приведенным выше кодом? Я ничего не думаю. Но в их документации снова и снова не хватает информации.
Обновить
Проблема сохраняется, только если вы хотите сделать это из обработчика событий:
elm_layout_signal_callback_add(layout, "mouse,clicked,1", "elm.*", show_loader_cb, layout);
static void show_loader_cb(void* data, Evas_Object* object, const char* emission, const char* source) {
Evas_Object* parent = reinterpret_cast<Evas_Object*>(data);
//PUT HERE THE CODE ABOVE
}
Ответ №1:
Похоже, с вашим кодом проблем нет.
Но прогресс, который не работает (2-е изображение), является общим состоянием с
elm_progressbar_pulse(obj, EINA_FALSE);
Проверьте этот пункт еще раз.
И я не совсем уверен в ваших намерениях в части обработчика событий.
Вы когда-нибудь хотели добавлять прогресс и работу при нажатии на макет?
Если да, попробуйте это,
evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN, show_loader_cb, layout);
Я не видел ваш полный код, но я предполагаю, что show_loader_cb не был вызван через обратный вызов.