galleggiante Sto scrivendo un'applicazione che utilizza il seguente codice per disegnare un EditText sullo schermo sopra le applicazioni in esecuzione:Android - La tastiera non compare nella finestra di
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);
Il XML per l'EditText è:
<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" />
Tuttavia, concentrandosi su questo non viene visualizzata la tastiera. Ho anche provato programmazione portandolo con onFocusListener:
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");
}
}
});
Ma anche se questo è chiamato, come si vede dalla logcat, non succede nulla. L'unico metodo che ho trovato finora per visualizzare la tastiera sta usando:
getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, 0);
ma che sembra digitare sullo schermo e non in EditText. Ho anche provato a mettere a fuoco in modo chiaro quando viene visualizzato l'edittext, ma inutilmente.
Sto indovinando il problema è perché sto usando una "finestra mobile", ma ci deve essere un modo per farlo funzionare come app come calcolatrici mobili esistono sul playstore che prendono input .. Qualcuno ha qualche idea ? Sono perplesso :(
Come si stanno ottenendo il valore da modificare il testo? – rup35h