Q&A
実現したいこと
Visual Studio 2017(API28)以降のXamarin.Formsで、アプリ起動時にアプリ全体にフォーカスが当たらなくなってしまいました。DispatchKeyEvent()で最初のACTION=KEYDOWNが取れず、ACTION=KEYUPのみとなってしまいます。
API27以前はアプリ起動時アプリ全体にフォーカスが当たるので、ACTION=KEYDOWN/ACTION=KEYUP両方が取得できます。
この動作の違いで、これまでのアプリが同様に動かず困っています。
Q. API28以降でも、アプリ起動時にアプリ全体にフォーカスを与える方法がないでしょうか?
前提
少し古い開発環境の質問で恐縮です。
Xamarin.FormsでAndroidアプリを開発しております。
Visual Studio 2015(API27以下)で開発した古いアプリをVisual Studio 2017以降(API28以上)に移植したいと考えています。
ターゲット端末は、ハードウェアキーボード付きのAndroid端末(ハンディターミナルと言われるもの)です。
アプリは、初期起動画面がEntryやButtonなどがない画面となっており、ハンディターミナルのハードウェアキーで数字や矢印キーを押して、DispatchKeyEvent()で入力イベント・キーを取得して処理を進めるようになっています。
該当のソースコード
簡単に比較できるよう、Visual Studio2017でブランクのXamarin.Formsアプリを作り試しました。ハードウェアキーボードの部分は、Bluetooth外付けキーボード等でも同じ動作となります。
★API27(Android8.1)でビルドすると、アプリ起動時にアプリ全体(StackLayout箇所)にフォーカスが当たり、ハードウェアキーボードを押すとaction=ACTION_DOWN/action=ACTION_UP両方でキーイベントを取ることができました。
(アプリ起動時↓)
★API28(Android9)以降でビルドすると、アプリ起動時にアプリ全体(StackLayout箇所)にフォーカスが当たらず、ハードウェアキーボードを押してもaction=ACTION_DOWNでキーイベントを取れません。Action=ACTION_UPのみ取得できます。
ACTION_DOWNでアプリ全体にフォーカスが当たり、ACTION_UPのみアプリで取得できているイメージです。
(アプリ起動時↓)
(キー押下後↓)
試したこと
Androidの開発ドキュメント等も読みましたが、フォーカスについての変更点はAPI28(Android9)にはありませんでした。それ以前のAPI26(Andorid8.0)ではフォーカスの仕様変更の記述がありましたが、現象とは一致しません。
View のフォーカス
何とぞご教授のほどよろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。