透過的な Android InputMethod を作成しようとしています。つまり、基になるコンテンツが、開発中のキーボードに表示されます。
システムに渡すビューを透明にすることができましたが、ビューの下に真っ白な何かがあり、基になるコンテンツを難読化しているようです。
それは間違いなく可能です、これらの人はそれをします:
透過的な Android InputMethod を作成しようとしています。つまり、基になるコンテンツが、開発中のキーボードに表示されます。
システムに渡すビューを透明にすることができましたが、ビューの下に真っ白な何かがあり、基になるコンテンツを難読化しているようです。
それは間違いなく可能です、これらの人はそれをします:
私はそれを考え出した!これがあなたのプレイストアリンクの人たちのやり方かどうかはわかりませんが、これが私にとってはうまくいきました. また、この投稿が 1 年以上前のものであることは認識していますが、透明なキーボードを作成しようとしたときに他の誰かがこれを発見した場合に備えて、まだ回答しています.
あなたの視野の下にある「何か」は、実際には何もありません - それは何もない空間です。キーボードがビュー全体を押し上げて邪魔にならないように、その高さのためのスペースを確保し、後ろに空の空白を残しました. 透明なキーボードは、この空白を透かして見せます。
解決策は次のとおりです。ビューを onCreateInputView で返すのではなく、onCreateCandidatesView で返します。これは通常、キーボードの上にあり、オートコレクトの候補を一覧表示するビューです。ただし、これを使用して実際のキーボードを収納します。
キーボードを候補ビューにしたい理由は、ほとんどの場合、入力ビューが下にあるビューを押し上げるからです。個々のアプリは、android:windowSoftInputMode を介してキーボードが表示され、入力ビューがその設定を尊重する場合の動作方法を決定できますが、候補ビューは常にadjustPan を使用します。
ドキュメントから: 「候補ビューは頻繁に表示および非表示になる傾向があるため、ソフト入力ビューと同じようにアプリケーション UI に影響を与えないことに注意してください。アプリケーション ウィンドウのサイズが変更されることはなく、アプリケーション ウィンドウのサイズが変更されるだけです。ユーザーが現在のフォーカスを確認できるように、必要に応じてパンします。」http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html
したがって、onCreateCandidatesView から透明なビューを返し、onCreateInputView から null を返し、必ず setCandidatesViewShown(true) を呼び出して、候補ビューが表示されるようにします (onWindowShown で呼び出します)。
通常、InputMethodServices は現在のバインディング アプリケーションの背景色と同じ背景色を使用します。これを透明にしたい場合は、inputmethodウィンドウではなく、popup-window構造にするべきだと思います。