web-dev-qa-db-fra.com

Afficher le clavier automatiquement

S'il vous plaît, expliquez-moi le problème du clavier logiciel . Par exemple, j'ai un EditText sur mon activité, un fragment de dialogue ou une fragmentactivité, peu importe .. .. le voici:

<EditText
    Android:id="@+id/edPswrd"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:ems="10"
    Android:inputType="textPassword" >

    <requestFocus />
</EditText>

Lorsqu'il s'affiche pour la première fois, je ne vois pas le clavier virtuel et je dois appuyer sur editText pour qu'il reçoive le focus et le clavier apparaît. Les autres activités sont différentes, quand il apparaît à l’écran, le clavier est chargé sans aucune aide ..__Je pensais que 

<requestFocus />

signifie que EditText sera concentré et le clavier apparaîtra, mais je me trompe.

Comment gérer quel composant recevra le focus et le clavier apparaîtra automatiquement.

37
Foenix

Je pense que c'est un bug ou une fonctionnalité qui essaie de vous présenter toute l'activité sans la masquer avec le clavier tactile au début. J'ai cherché une fois des informations à ce sujet, mais je n'ai malheureusement rien trouvé qui puisse provenir d'une source vraiment fiable.

Quoi qu'il en soit, pour afficher le clavier logiciel, vous pouvez faire ceci:

EditText editText = (EditText)findViewById(R.id.edit_text_id);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

J'ai aussi vu ce code qui devrait forcer le clavier logiciel à devenir visible juste après le début de l'activité, mais je ne l'ai jamais essayé:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

Et si vous voulez masquer le clavier logiciel, vous pouvez faire ceci:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

J'espère que cela pourra aider.

Modifier:

Pour un DialogFragment ceci devrait fonctionner: dans la méthode onCreateView() faites ceci:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_id, container);
    EditText editText = (EditText)view.findViewById(R.id.edit_text_id);

    // show soft keyboard
    editText.requestFocus();
    getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

    return view;
}
59
andr

Ouvrez le fichier Manifest Android.

Recherchez la balise d'activité comme celle-ci

<activity  
        Android:name="com.example.framework.MainActivity"
        Android:label="@string/app_name" 
        Android:windowSoftInputMode="stateVisible"       //Add this line    
         >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Ajoutez la ligne Android: windowSoftInputMode = "stateVisible" comme indiqué ci-dessus

29
manpreet singh

Je sais que cela a déjà été répondu, mais j'ai trouvé un moyen de faire la réponse acceptée dans onCreateDialog au lieu de juste dans onCreateView. Lorsque vous avez terminé avec le générateur, avant de revenir, procédez comme suit:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());  
// blah blah blah do builder stuff here like setTitle, setView, etc

Dialog d = builder.create();

Voici la partie importante:

d.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
return d;
15
MidasLefko

ajouter à onCreate ou onStart ();

myView.requestFocus();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
5
Konrad Winkowski

Essaye ça

@Override
public void onResume() {
   super.onResume();
   final View v = getDialog().findViewById(R.id.edit_text_id);
   v.post(new Runnable() {
      @Override
      public void run() {
        v.requestFocus();
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) imm.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
      }
   });
 }
2
ls.illarionov

C'est ce que j'ai fait et ça marche bien ...

Vous pouvez utiliser le 

Utilitaires.showSoftKeyboard (...)

n'importe où dans votre code

public final class Utilities {

  // Shows the soft keyboard. V on which view (typically EditText) to focus the keyboard input
  public static void showSoftKeyboard(Activity activity, EditText editText) 
  {
      InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
  }
}

/**
 * Called when user clicks/touches the search button
 * @param v The clicked/touched view (EditText)
 */
protected void onSearchButtonClick(View v)
{
    EditText seekTopic = (EditText) findViewById(R.id.SeekTopicBox);
    setActivityContent(seekTopic.getText().toString());
}

Le 

onSearchButtonClick ()

la méthode appartient à l'activité, qui contient le EditView que je veux éditer et donc j'ai besoin du clavier logiciel ..

HTH

0
Sold Out

Je recommande le lien suivant, j’ai suivi les étapes mentionnées ci-dessous, parfaitement, c’est une très bonne réponse, faite en étapes très simples. le crédit va à la personne répondue. J'espère que cela aidera la personne qui manipule le clavier contextuel lors d'une activité de dialogue.

DialogFragment et force d'afficher le clavier

0
MohanRaj S

C'est ce qui a fonctionné pour moi - 

Créez votre propre classe EditText et remplacez la méthode suivante - 

public class FocussableEditText extends EditText {

    public FocussableEditText(Context context) {
        super(context);
    }

    public FocussableEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public FocussableEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        super.onWindowFocusChanged(hasWindowFocus);
        if (hasWindowFocus) {
            InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(this, InputMethodManager.SHOW_FORCED);
        }
    }
}

http://debuggingisfun.blogspot.in/2014/08/Android-show-soft-keyboard.html

0
v01d

pour moi en ajoutant cette ligne Android: windowSoftInputMode = "stateVisible" dans votre manifeste comme ceci 

**<activity
            Android:name=".mmmmm.zzzzzzz.yyyyyy.xxxxxx"
            Android:windowSoftInputMode="stateVisible"
            Android:label="@string/title_activity_print_recharge"></activity>**

voici comment je l'ai résolu

0
other Tall guy