Je me développe pour une tablette utilisant Android 2.2.
J'ai une forme que j'utilise pour des instances neuves et modifiables. Lorsque modifiable, je souhaite arrêter l'utilisateur de modifier certains champs. Je gère cela dans mon onStart
- événement, définir la fonction txt.setFocusableInTouchMode(false)
. Cela force l'accent sur la prochaine étape concentable EditText
dans ma forme (qui est génial), mais lors de l'exécution, le clavier logiciel apparaît automatiquement pour le EditText
avec la mise au point. Quelqu'un sait comment arrêter ça?
Voici le code (appelé dans l'événement onStart
):
private void PopulateFields(){
TextView txtTitle = (TextView) this.findViewById(R.id.txtEquipmentEditTitle);
AutoCompleteTextView txtMake = (AutoCompleteTextView) this.findViewById(R.id.autEquipmentEditMake);
AutoCompleteTextView txtModel = (AutoCompleteTextView) this.findViewById(R.id.autEquipmentEditModel);
EditText txtDesc = (EditText) this.findViewById(R.id.txtEquipmentEditDesc);
TextView txtDeptKey = (TextView) this.findViewById(R.id.txtEquipmentEditDeptKey);
EditText txtSerial = (EditText) this.findViewById(R.id.txtEquipmentEditSerialNo);
EditText txtBarCode = (EditText) this.findViewById(R.id.txtEquipmentEditBarCode);
txtTitle.setText("Edit Equipment");
txtMake.setText(make);
txtModel.setText(model);
txtDesc.setText(desc);
txtDeptKey.setText(Integer.toString(deptKey));
txtSerial.setText(serial);
txtBarCode.setText(barCode);
txtMake.setEnabled(false);
txtModel.setEnabled(false);
txtDesc.setEnabled(false);
txtMake.setClickable(false);
txtMake.setFocusableInTouchMode(false);
txtModel.setFocusableInTouchMode(false);
txtDesc.setFocusableInTouchMode(false);
txtMake.setFocusable(false);
txtModel.setFocusable(false);
txtDesc.setFocusable(false);
}
Nous pouvons cacher le device Keybord
par des moyens suivants qui dépend totalement de la nécessité de la situation
First Way_
EditText userId;
/*
* When you want that Keybord not shown untill user clicks on one of the EditText Field.
*/
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Second Way_
INPUTMETHODMANAGER
/*
* When you want to use service of 'InputMethodManager' to hide/show keyboard
*/
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(userId.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
Third Way_
/*
* Touch event Listener
* When you not want to open Device Keybord even when user clicks on concern EditText Field.
*/
userId.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int inType = userId.getInputType(); // backup the input type
userId.setInputType(InputType.TYPE_NULL); // disable soft input
userId.onTouchEvent(event); // call native handler
userId.setInputType(inType); // restore input type
userId.setFocusable(true);
return true; // consume touch even
}
});
Nom de toutes les voies ci-dessus_ Vous pouvez également définir windowSoftInputMode
dans l'application s
manifest` file__
<manifest ... >
<application ... >
<activity
Android:windowSoftInputMode="stateHidden|stateAlwaysHidden"
... >
<intent-filter>
...
</intent-filter>
</activity>
</application>
</manifest>
J'espère que cela aidera tout!
Si vous le souhaitez pour un particulier EditText
cela fonctionnera.
editText.setShowSoftInputOnFocus(false);