pływających Piszę aplikację, która wykorzystuje następujący kod do narysowania EditText na ekranie nad uruchomionych aplikacji:Android - Klawiatura nie pojawia się w oknie
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);
xml dla EditText jest:
<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" />
Jednak skupienie się na tym nie powoduje wyświetlenia klawiatury. Próbowałem zostały również programowo wychowanie go z 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");
}
}
});
Ale mimo że nazywa się, jak wynika z LogCat, nic się nie dzieje. Jedynym sposobem znalazłem tak daleko, aby wyświetlić klawiaturę korzysta:
getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, 0);
Ale to wydaje się wpisać na ekranie, a nie na EditText. Próbowałem również wyraźnego fokusowania, gdy editekst jest wyświetlany, ale bez skutku.
Zgaduję, że problem polega na tym, że używam "ruchomego okna", ale musi istnieć sposób, aby to działało, ponieważ aplikacje takie jak pływające kalkulatory istnieją w playstore, które pobierają dane wejściowe. Każdy ma jakieś pomysły ? Jestem zakłopotany :(
Jak otrzymujesz wartość z edycji tekstu? – rup35h