2013-05-15 11 views
9

ich eine Anwendung Ich schreibe, das den folgenden Code verwendet eine EditText auf dem Bildschirm über laufende Anwendungen zu zeichnen:Android - Tastatur erscheint nicht Fenster in schwebenden

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 
        | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, 
       PixelFormat.TRANSLUCENT); 

windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 

windowManager.addView(mEditText, params); 

Die xml für die EditText ist:

<EditText 
      android:id="@+id/mEditText" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:maxLines="3" 
      android:inputType="textAutoComplete|text" 
      android:focusable="true" 
      android:focusableInTouchMode="true" /> 

Allerdings konzentriert sich das auf die Tastatur nicht. Ich habe auch programmatisch versuchte es mit einem onFocusListener bringen:

mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if(hasFocus) { 
        Log.d("", "Has focus"); 
        ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(v, InputMethodManager.SHOW_IMPLICIT); 
       } else { 
        Log.d("", "Lost focus"); 
       } 
      } 
     }); 

Aber obwohl das genannt wird, wie aus dem logcat gesehen, passiert nichts. Die einzige Methode, die ich bisher gefunden habe die Tastatur anzuzeigen verwendet:

getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, 0); 

Aber das scheint auf den Bildschirm zu schreiben und nicht in die EditText. Ich habe auch versucht klar fokussierbar, wenn der Edittext angezeigt wird, aber ohne Erfolg.

Ich vermute, das Problem ist, weil ich ein "schwebendes Fenster" verwende, aber es muss eine Möglichkeit geben, dies zu tun, wie Apps wie Floating Calculatoren auf dem Playstore vorhanden sind, die Eingabe nehmen .. Jeder hat irgendwelche Ideen ? Ich bin ratlos :(

+0

Wie Sie den Wert aus Bearbeiten von Text bekommen? – rup35h

Antwort

11

Meine schlecht .. Ich erkennen, wenn ich den WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE entfernen, es funktioniert .. dummen Fehler

+0

Aber mit dieser Flagge verhindert außen zu Hause Buttom klickbar –

-1

Programatically:

editText.requestFocus(); 

oder über XML:

<EditText...> 
    <requestFocus /> 
</EditText> 
+0

Keiner von denen funktioniert hier – crazyfool

4

Verwenden WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT, 
        WindowManager.LayoutParams.WRAP_CONTENT, 
        WindowManager.LayoutParams.TYPE_PHONE, 
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
        PixelFormat.TRANSLUCENT); 

Für weitere Details und Beispiele folgen Sie dem Link: https://github.com/atifmahmood29/overlays-floating-window-like-facebook-messenger

+0

Dank Saved My Day –

Verwandte Themen