자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
C++ Builder 가상 키보드 크기가 정상적으로 넘어오지 않습니다.
2017.09.25 10:10
가상 키보드에 관련된 내용은 거의 셈플에 나와있는 VirtualKeyboardDemo를 기준으로 설명되어 있는데 테스트를 해보니 정상적인 크기를 넘겨 주지 못하고 있습니다.
소스에 한줄을 추가하여 넘어오는 값을 표시해주었습니다.
void __fastcall TVKBaseForm::FormVirtualKeyboardShown(TObject *Sender, bool KeyboardVisible,
const TRect &Bounds)
{
FKBBounds = TRectF(Bounds);
FKBBounds = TRectF(ScreenToClient(FKBBounds.TopLeft()),ScreenToClient(FKBBounds.BottomRight()));
UpdateKBBounds(); Label1->Text = String().sprintf(L"Keyboard Types %d, %d", Bounds.Top, Bounds.Bottom);
}
//---------------------------------------------------------------------------
사용 버젼은 됴쿄 10.2 릴리즈1 이고 테스트 장비는 LG - F600S입니다.
버그인것인지 아니면 잘못 이해한 것인지 모르겠습니다.
가상키보드의 높이를 구하는 방법을 알면 해결될듯한데 다른 방법은 없는지요?
감사합니다.
C++ Builder 가상 키보드 크기가 정상적으로 넘어오지 않습니다.
2017.09.25 10:10
가상 키보드에 관련된 내용은 거의 셈플에 나와있는 VirtualKeyboardDemo를 기준으로 설명되어 있는데 테스트를 해보니 정상적인 크기를 넘겨 주지 못하고 있습니다.
소스에 한줄을 추가하여 넘어오는 값을 표시해주었습니다.
void __fastcall TVKBaseForm::FormVirtualKeyboardShown(TObject *Sender, bool KeyboardVisible,
const TRect &Bounds)
{
FKBBounds = TRectF(Bounds);
FKBBounds = TRectF(ScreenToClient(FKBBounds.TopLeft()),ScreenToClient(FKBBounds.BottomRight()));
UpdateKBBounds(); Label1->Text = String().sprintf(L"Keyboard Types %d, %d", Bounds.Top, Bounds.Bottom);
}
//---------------------------------------------------------------------------
사용 버젼은 됴쿄 10.2 릴리즈1 이고 테스트 장비는 LG - F600S입니다.
버그인것인지 아니면 잘못 이해한 것인지 모르겠습니다.
가상키보드의 높이를 구하는 방법을 알면 해결될듯한데 다른 방법은 없는지요?
감사합니다.
해당 현상을 살펴보니 말씀하신 증상이 나타납니다.
안드로이드 환경에서
폼의 OnVirtualKeyboardShown 함수의 Bounds(키보드 영역) 파라메터의 값이 비정상적으로 작은 값이 넘어옵니다.
원인을 파악해보니 다음 이슈가 있었습니다.
- 이슈: 키보드가 표시되기 전에 해당 이벤트가 호출되어 키보드 표시하기 전의 키보드 영역이 Bounds 파라메터로 넘어옴
안드로이드에서 키보드 영역을 구해오는 방법은 아래와 같습니다.
uses
FMX.Platform.Android,
Androidapi.JNI.GraphicsContentViewText;