Une de mes applications a un "écran d'ouverture" (essentiellement un menu) qui a une EditText
suivie de plusieurs Button
s. Le problème est que plusieurs de mes utilisateurs signalent que, lorsqu'ils ouvrent l'application, celle-ci affiche automatiquement le clavier à l'écran sans même toucher à la EditText
. Autant que je sache, tous ces utilisateurs utilisent le HTC Hero .
Est-ce un bug dans la 1.5? Y a-t-il quelque chose que je puisse faire à ce sujet?
Vous pouvez utiliser la ligne de code suivante dans la méthode onCreate de l'activité pour vous assurer que le clavier apparaît uniquement lorsqu'un utilisateur clique dans un EditText.
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
<application Android:icon="@drawable/icon" Android:label="@string/app_name">
<activity Android:name=".Main"
Android:label="@string/app_name"
Android:windowSoftInputMode="stateHidden"
>
Cela fonctionne pour Android 3.0, 3.1, 3.2, 4.0 - Editeur utilisé pour compiler (Eclipse 3.7)
Placez le 'windowSoftInputMode = "stateHidden"' dans le fichier XML manifeste de votre application pour CHAQUE activité pour laquelle le clavier du logiciel doit rester caché. Cela signifie que le clavier ne s'affichera pas automatiquement et que l'utilisateur devra cliquer sur un bouton de la souris. champ de texte pour le mettre en place. J'ai cherché pendant presque une heure quelque chose qui fonctionnait alors j'ai pensé partager.
Ce code fonctionnera sur toutes les versions d'Android:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//Automatic popping up keyboard on start Activity
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
or
//avoid automatically appear Android keyboard when activity start
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
Ajoutez ceci dans votre AndroidManifest.xml :
Android:windowSoftInputMode="stateHidden|adjustResize"
Ça fonctionne parfaitement. :)
Vous pouvez utiliser soit cela dans la méthode onCreate () de l'activité
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
ou collez ce code dans les balises d'activité dans AndroidManifest.xml
Android:windowSoftInputMode="stateVisible"
Vous pouvez ajouter une seule ligne de code dans Android Manifest.xml sous balise d'activité
<activity
Android:name="com.sams.MainActivity"
Android:windowSoftInputMode="stateVisible" >
</activity>
cela peut vous aider.
Ajoutez ceci dans la disposition parent du XML.
Android:focusable="true"
Android:focusableInTouchMode="true"
Cela garantit que le focus n'est pas sur editText lorsque l'activité commence.
Vous pouvez le faire par programme comme
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
ou définissez Android:windowSoftInputMode="stateHidden"
dans <activity tag
à l'intérieur de AndroidManifest.xml
Dans cette version d'Android, lorsqu'une vue est gonflée, le focus est défini par défaut sur le premier contrôle focusable. S'il n'y a pas de clavier physique, le clavier à l'écran s'affiche.
Pour résoudre ce problème, définissez explicitement le focus ailleurs. Si focus est défini sur autre chose qu'un EditText, le clavier à l'écran n'apparaîtra pas.
Avez-vous essayé de tester cela en exécutant Android 1.5 dans l'émulateur?
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
imm.ShowSoftInput(_enterPin.FindFocus(), 0);
* Ceci est pour Android.xamarin et FindFocus () - il recherche la vue dans la hiérarchie basée sur cette vue qui a actuellement le focus, comme j'ai _enterPin.RequestFocus () avant le code ci-dessus, ainsi il affiche le clavier pour _enterPin EditText *
Incluez ceci là où les importations sont sur le dessus:
import Android.view.WindowManager;
Ajoutez ce code sur la partie OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}