Languages

Menu
Sites
Language
entry oject 관련

안녕하세요.

타이젠 앱을 배우고 있는 초보자입니다.

 

테스트용으로 앱을 짜보고 있는데요...

container를 grid로 두고,

해당 grid 안에 bg로서 이미지를 두었습니다.

그리고 그 위에 다시 box 두개를 두어 각각의 box 당 entry 오브젝트를 표시하도록 화면을 구성중입니다.

 

근데 entry object를 누르면 input panel 이 튀어올라오면서

bg 이미지가 resize 되고 layout도 위로 치우쳐 집니다.

근데 이 동작시 각각의 오브젝트별로 resizing 되는 비율이 달라서

배경 이미지와 오브젝트 들이 정해진 이미지 영역을 벗어나게 되네요.

( 원래 사각형 배경 이미지안에 있었는데 영역을 벗어남)

 

1. 혹시 input panel 이 활성화 되어도 resizing 되지 않도록 처리하는 방법은 없나요?

2. box 안에 label + entry +label 을 구성하고 다른 화면으로 전환했다가 다시 현재 화면으로 돌아왔을때

entry 오브젝트의 영역이 처음과 달리 작아져 있습니다. 고정시킬 방법은 없나요?

3. entry를 누르거나 back key를 눌러 input panel 을 활성화 혹은 비활성화 시킬때 ,

변경되는 input panel 의 상태에 따라  active 되어있는지 체크할수 있는 방법이 있을까요?

 

 

 

 

Edited by: Kim on 29 Jul, 2015

Responses

8 Replies
Alex Dem

Hi,
How to recognize keyboard appearance:
Entry emits signals , please find 'Emitted signals' section.
https://developer.tizen.org/dev-guide/2.3.0/org.tizen.native.mobile.apireference/group__Entry.html
Maybe you could try to add callbacks for signals "focused"/"unfocused"
with    
evas_object_smart_callback_add(entry, "focused", focused_cb, data);
Alexey.

Alex Dem

Also please see this topic, maybe could be useful:
https://developer.tizen.org/forums/native-application-development/enable-only-numeric-virtual-keyboard-entry
Alexey.

Kim

Hello, Alex.

First, thank you for your advice.

 

Actually, I already adjusted that.

As you said, If I press entry , I could get the event for 'focused'.

But , when I press back_key(HW) , input panel is disappeared , I can't receive the 'unfocused' event.

By checking, I know I can get this event when I select another object.

Above this , I checked evas events, such as  "activated", "clicked", EVAS_CALLBACK_FOCUS_IN, EVAS_CALLBACK_FOCUS_OUT, EVAS_CALLBACK_HIDE, EVAS_CALLBACK_RESIZE...

Maybe, For deactivaed panel by back_key, I guess I can know it by EEXT_CALLBACK_BACK.
But, I don't know how can I define the 'eext_popup_back_cb'.
Please let me know .

 

However, I couldn't know if input panel is activated or not by back_key, exactly.

By 1 evas event, I can't check the panel's status.

shortly, If I know the 'activated panel' , I couldn't know 'deactivaed panel'.

 

Anyway, by 1 API, Can I know the status of input panel , directly ?

I want to know that.

I hope your advice.

Thanks, again.

 

1. I don't know how can I define the 'eext_popup_back_cb'.
Please let me know .

2. By 1 API, Can I know the status of input panel , directly ?

 

 

 

Jeongsu Kim

conformant widget을 사용하시면 됩니다.

https://developer.tizen.org/development/guides/native-application/ui/ui-control/elementary-widgets/container-widgets#conformant

  • "virtualkeypad,state,on": The virtual keyboard has been switched on.
  • "virtualkeypad,state,off": The virtual keyboard has been switched off.
  • "virtualkeypad,size,changed": The virtual keyboard size has changed.

위와 같은 시그널을 지원합니다.

 

EFL 앱의 기본 구조

https://developer.tizen.org/development/guides/native-application/ui/efl-0

에서 Basic Structure of an EFL Application in Tizen도 참고하세요.

Jeongsu Kim

https://developer.tizen.org/forums/native-application-development/what-concept-conformant

을 보시면 conformant에 대한 설명이 더 있습니다.

pius lee

conformant 를 쓰는것이 맞습니다.

keypad가 나타나는 event를 가져올 수는 있지만 conformant를 써도 생각하신대로 layout이 줄어드는걸 피할수는 없으실텐대요.

 

이때는 적절한 SIGNAL을 conformant에 날려줘야 하는데요.

https://git.tizen.org/cgit/framework/uifw/efl-theme-tizen.git/tree/2.3-mobile/widgets/conform.edc?h=tizen_2.3

위 코드는 Tizen 2.3의 Conformant EDC theme파일인데, 잘 살펴보면, 어느 Signal을 날려야 layout이 줄어들지 않는지 알 수 있습니다.

쉽게 얘기해서 아래처럼 코드로 Signal을 날리시면 됩니다.

elm_object_signal_emit(ad->conform,"elm,state,virtualkeypad,disable", "");
elm_object_signal_emit(ad->conform,"elm,state,clipboard,disable", "");

문제는 이 부분이 document에 설명이 없기 때문에, 항상 보장이 안되는 부분이라 호환성 있는 코드를 만드실때 쓰기엔 적절하지 않을 수 있습니다.

하지만 다른 방법이 있는지 여부는 아직 잘 모르겠네요...

Kim

도움 감사합니다.

그런데 , 말씀하신대로 signal 을 날려줘도 layout 은 역시나 줄어드네요...

elm_object_signal_emit(ad->conform,"elm,state,virtualkeypad,disable", "");
elm_object_signal_emit(ad->conform,"elm,state,clipboard,disable", "");

 

그런데 위의 코드는 virtual keypad를 안나오도록 하는거아닌가요?

제 의도는 layout 이 줄어들지 않은 상태에서  virtual keypad가 나왔으면 하는것이었습니다.

entry를 통해 입력을 받아야 하거든요.

virtual keypad 가 나오면서 전체적으로 resizing 되어, 화면이 제대로 안나와서요...

 

layout 을 줄어드는걸 막을수 없다면,

virtual keypad 가 activate / deactivate 될때마다 아는 방법은 없나요?

entry를 터치할때는 ~activate , back_key를 누르면 ~deactivate 

 

evas event를 통해 focus 나 click, changed 를 통해 activated되는건 알수 있으나

back key를 통해 deactivate  되는건 아는 방법이 없어서요...

바쁘신데 죄송하지만, 추가 도움 부탁드립니다.

 

 

 

 

 

 

Jeongsu Kim

elm_object_signal_emit(ad->conform,"elm,state,virtualkeypad,disable", "");
elm_object_signal_emit(ad->conform,"elm,state,clipboard,disable", "");

이 코드는 virtual keyboard가 올라오더라고 child object 크기를 resize 하지 않겠다는 의미입니다.

사용하시는 layout이 conform에  set 되었는지 확인이 필요해 보입니다.

elm_object_content_set(ad->conform, layout);

 

추가로 언급하신 virtual keyboard가 올라왔는지 여부는 앞에서 알려드린 것처럼

  • "virtualkeypad,state,on": The virtual keyboard has been switched on.
  • "virtualkeypad,state,off": The virtual keyboard has been switched off.
  • "virtualkeypad,size,changed": The virtual keyboard size has changed.

를 사용하시면 됩니다.

evas_object_smart_callback_ad(ad->conform, "virtualkeypad,state,on", _virtual_keyboard_on, NULL);

 

그리고 처음 하실때 grid가 편해 보이는데 사실 잘 안씁니다. EDC가 좀 생소해도 EDC를 쓰시는게 더 좋을거 같네요.