Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Show soft keyboard for dialog

I am displaying a dialog with an edittext view. However, the softkeyboard will open only if the user presses inside the editview. So I tried calling an InputMethodManager with the following code.

InputMethodManager imm =  (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(dialogField,0); 

The dialogField is the input field. However, when exactly am I supposed to do this? I tried it in the onStart() method of the dialog, but nothing happens. I also tried requesting the focus for the dialogField before, but that changes nothing.

I also tried this code

dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener() {     public void onFocusChange (View v, boolean hasFocus)     {         if (hasFocus)         {             Main.log("here");             dialogInput.getWindow().setSoftInputMode(               WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);             /*                 InputMethodManager mgr =                   (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);                 mgr.showSoftInput(dialogField,0);             */         }     } }); 

in both versions. But no soft keyboard would like to appear. The Main.log is just a log, which shows me that the function is actually called. And yes, it is called.

I could get the keyboard with the SHOW_FORCED flag before the dialog opens. But then it will not close on exit. And I can only do that BEFORE I show the dialog. Inside any callbacks it does not work either.

like image 691
Rene Avatar asked Nov 23 '10 16:11

Rene


People also ask

How do I open a soft keyboard?

By default, the soft keyboard may not appear on the emulator. If you want to test with the soft keyboard, be sure to open up the Android Virtual Device Manager ( Tools => Android => AVD Manager ) and uncheck "Enable Keyboard Input" for your emulator. Now restart the emulator.

What is soft keyboard in Android?

The soft keyboard (also called the onscreen keyboard) is the main input method on Android devices, and almost every Android developer needs to work with this component at some point.

How do I show soft keyboard when Edittext is focused?

android:windowSoftInputMode="stateAlwaysVisible" -> in manifest File. edittext. requestFocus(); -> in code. This will open soft keyboard on which edit-text has request focus as activity appears.


2 Answers

Awesome question, I was trying to do that too and found a solution.

Using the dialog builder class AlertDialog.Builder you will have to invoke the dialog like this:

AlertDialog.Builder builder = new AlertDialog.Builder(); AlertDialog dialog;  builder.set...  dialog = builder.create(); dialog.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); dialog.show(); 

This worked fine for me.

Note: you must import android.view.WindowManager.LayoutParams; for the constant value there.

like image 193
SparK Avatar answered Sep 21 '22 22:09

SparK


 AlertDialog dialog = new AlertDialog.Builder(this).create();     dialog.show();     Window window = dialog.getWindow();     window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);     window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
like image 27
duranun Avatar answered Sep 20 '22 22:09

duranun