2017-09-06 4 views
0

サービスを使用して私のアプリケーションのためにチャットヘッドの種類のポップアップを実装しました。そして、私はその中にテキストを編集しました。チャットヘッドの種類が編集テキストでポップアップします。しかし、キーパッドが内部にクリックされたときに起きない

しかし、私が編集テキストをクリックすると、カーソルが見えてキーボードが上がらないという問題があります。さらに、その編集テキスト内のテキストを選択またはコピーすることもできません。どんな助け?ありがとう

+0

コードを投稿できますか? –

答えて

0

私の問題の解決策が見つかりました。

私は次のコードを以前使用していました: -

グローバル変数: -

private WindowManager mWindowManager; 
WindowManager.LayoutParams params; 

そして、サービスののonCreateに

mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 


    //Add the view to the window. 
    params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
      PixelFormat.TRANSLUCENT); 

問題FLAG_NOT_TOUCH_MODALを使用し、FLAG_NOT_FOCUSABLEしていました代わりに

しかしもう一度問題が発生しましたが、浮動ビューでキーボードを手に入れることはできましたが、キーパッドは他のアプリケーションには表示されず、バックボタンも機能しなくなりました。

これを修正するには、フローティングUIのキーパッドを有効にするか無効にするかを切り替えるフローティングUIのボタンを使用して、バックボタンとキーパッドを他のアプリケーションで使用できるようにします。

私は同じのために、次のコードを使用: -

private void enableKeyPadInput(Boolean enable) { 
    mWindowManager.removeViewImmediate(mFloatingView); 

    if (enable) { 
     params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
       PixelFormat.TRANSLUCENT); 
    } else { 
     params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT); 
    } 

    mWindowManager.addView(mFloatingView, params); 
} 

真は、このメソッドに渡された場合は、キーパッドが動作を開始します。 falseが渡された場合、他のアプリは動作を開始します。

これは私の問題の回避策です。これを達成するための他の方法はこれよりも良いのですか?

関連する問題