Farido mastr
Farido mastr

Reputation: 504

Keyboard not showing inside Alert Dialog with ListView of EditText

//code of AlertDialog
        final AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
        alert.setTitle(R.string.modification);
        persoFomulair=new ListView(getActivity());
        List<HashMap<Boolean,HashMap<String,String>>>list = prepareList(p);
        MyListAdapter2 myListAdapter2 = new MyListAdapter2(getActivity(), R.layout.perso_list, list);
        persoFomulair.setAdapter(myListAdapter2);
        alert.setView(persoFomulair);

        alert.setPositiveButton(R.string.valider, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                //What ever you want to do with the value


                getValueOfItem();
                ModifierPerso modifierPerso = new ModifierPerso();
                modifierPerso.execute(type, String.valueOf(p.getId()), date_embauch, salair_journ);
            }

        });
        alert.setNegativeButton(R.string.annuler, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                // what ever you want to do with No option.

            }
        });
        AlertDialog alertDialog=alert.create();
        alertDialog.getWindow().clearFlags( WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

        alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
        alertDialog.show();
        
        //what i think you need to see is the only parts from the array adapter bellow this comment
                    if(type.equals("Date embauch :")){editText.setText(result);editText.setInputType(InputType.TYPE_DATETIME_VARIATION_DATE);}
            else if(type.equals("Salair Journal :")){editText.setText(result);editText.setInputType(InputType.TYPE_CLASS_NUMBER);}
            else {editText.setVisibility(View.GONE);textView.setText(type+result);}
            

While searching for my problem I found that it's because of using adjustPan in android Manifest. I'm using a list of EditTexts inside a dialog for which it will make it impossible in the way I wrote code to work. Also, it's long and will not let the keyboard to show to fit the screen.

Here's a screenshot of the scenario: dialog

Notice that in code I only want to make the selected EditText enabled and not the others one.

Upvotes: 3

Views: 1856

Answers (2)

Farido mastr
Farido mastr

Reputation: 504

I found a sollution thanks to Stackoverflow questions and answers which is by adding this to the listView (in case listView is in dialog )

//persoFomulair is a listView with editTexts
persoFomulair.post(new Runnable() {

            @Override
            public void run() {
                dialog.getWindow().clearFlags(
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
                                WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
            }
        });

Upvotes: 11

Prokash Sarkar
Prokash Sarkar

Reputation: 11873

Try this setup after the dialog has been created,

Dialog.getWindow().clearFlags( WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); 

Dialog.getWindow().setSoftInputMode(WindowManager.LayoutPara‌​ms.SOFT_INPUT_STATE_‌​VISIBLE);

Upvotes: 4

Related Questions