J'ai un texte édité:
<LinearLayout Android:id="@+id/linearLayout7" Android:layout_width="match_parent" Android:layout_height="wrap_content">
<EditText Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:layout_weight="1" Android:id="@+id/editText1" Android:text="3">
<requestFocus></requestFocus>
</EditText>
<Button Android:text="Button" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/button2"></Button>
</LinearLayout>
et puis d'autres choses sous
Le problème que j'ai est que dès que l'application démarre, l'accent est mis sur l'entrée, je ne veux pas que l'accent soit mis sur l'entrée dès le démarrage de l'application.
J'ai essayé d'enlever le
<requestFocus></requestFocus>
chose et il n'a rien fait.
Ajoutez les éléments Android:focusable="true"
et Android:focusableInTouchMode="true"
dans la disposition parente de EditText as follow;
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/linearLayout7" Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:focusable="true" Android:focusableInTouchMode="true">
Je pense que cela devrait vous aider.
NON Plus de travail ... ajoutez simplement Android: windowSoftInputMode = "stateAlwaysHidden" À la balise d’activité du fichier Manifest.xml.
Si vous voulez effacer le focus par défaut sur le texte modifié, utilisez les 2 attributs suivants
Android:focusable="false"
Android:focusableInTouchMode="true"
à l'intérieur de la mise en page linéaire parent.
par exemple:
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:focusable="false"
Android:focusableInTouchMode="true"
Android:orientation="vertical">
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="email id"
Android:inputType="textEmailAddress"
Android:maxLines="1"
/>
</LinearLayout>
Si vous souhaitez masquer le clavier lors de la création d'une activité, utilisez ces attributs dans la balise d'activité du fichier manifeste Par exemple:
<activity
Android:configChanges="screenSize|orientation|keyboardHidden"
Android:screenOrientation="portrait"
Android:name=".activities.LoginActivity"
Android:windowSoftInputMode="stateHidden|adjustResize"/>
Si vous voulez masquer le clavier lors d’un clic sur un bouton ou lorsqu’un événement survient, utilisez le code suivant
public void onClick(View v) {
try {
//InputMethodManager is used to hide the virtual keyboard from the user after finishing the user input
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isAcceptingText()) {
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
} catch (NullPointerException e) {
Log.e("Exception", e.getMessage() + ">>");
}
}
} catch (NullPointerException e) {
Log.e("Exception", e.getMessage() + ">>");
}
Si vous souhaitez supprimer le focus de la modification des champs de texte après avoir quitté l'activité
@Override
protected void onResume() {
super.onResume();
mEmail.clearFocus();
mPassword.clearFocus();
}
Et enfin, si vous souhaitez effacer les données dans les champs de texte d'édition lors de la soumission du formulaire, utilisez
@Override
protected void onResume() {
super.onResume();
mEmail.getText().clear();
mPassword.getText().clear();
}
Vous pouvez utiliser le mode de saisie logicielle de fenêtre masqué pour masquer le clavier et Android:focusable="false"
et Android:focusableInTouchMode="true"
.
<activity
Android:name=".MainActivity"
Android:windowSoftInputMode="stateHidden"
Android:label="@string/app_name"
>
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<LinearLayout
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:layout_width="0px"
Android:layout_height="0px" />
<EditText Android:text=""
Android:id="@+id/EditText01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:hint="@string/hint">
</EditText>
Aucun autre codage nécessaire, c'est une solution simple et claire.
<EditText
Android:id="@+id/input"
Android:layout_width="0dp"
Android:layout_height="48dp"
Android:focusable="false"
Android:focusableInTouchMode="false" />
detailInputView = (EditText) debugToolsView.findViewById(R.id.input);
detailInputView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
detailInputView.setFocusable(true);
detailInputView.setFocusableInTouchMode(true);
return false;
}
});
essayez ce code dans LinearLayout
<LinearLayout
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<EditText
Android:hint="Search..."
Android:drawableRight="@drawable/ic_search"
Android:id="@+id/search_tab_hotbird_F"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
<Android.support.v7.widget.RecyclerView
Android:id="@+id/recyHotbird_F"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:padding="4dp">
</Android.support.v7.widget.RecyclerView>
</LinearLayout>
Hei Lee ,
Il y a plusieurs façons de faire cela, Mudassir vous a donné le moyen de le faire.
Si l'idée ne fonctionne pas, alors faites simplement une chose simple-
Dans votre AndroidManifest>Activity
, ajoutez ce code simple:
Android:windowSoftInputMode="stateHidden"
Rien ne doit être fait dans EditText en XML, tout sera un travail et aucun focus n'apparaîtra.
Regardez l'exemple de code de la vraie vie:
<activity
Android:name=".MainActivity"
Android:windowSoftInputMode="stateHidden"
Android:label="@string/app_name"
>
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Ajoutez simplement ce qui suit à la balise XML de votre vue de présentation principale:
Android:focusableInTouchMode="true"