Настройка 1 текстового элемента в genlist — и получение выделенного сигнала

#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 (реализованный отображаемый)?