Aller au contenu

[Résolu] Gestion du focus à l'ouverture d'une activité


TsCyrille

Recommended Posts

Bonjour

J'ai une activité composée d'un ScrollView avec plusieurs EditText. Quand je lance cette activité, le focus est donné au premier EditText se trouvant dans mon ScrollView mais cela :

- m'ouvre automatiquement le clavier (je fais mes tests sur un HTC Desire)

- me positionne au milieu de mon ScrollView (mon premier EditText se trouvant au milieu du ScrollView)

En fait j'aimerai être positionné au début de mon ScrollView et que le clavier ne s'ouvre pas (en fait que le premier EditText n'ai pas le focus).

Est-ce que cela est possible (par exemple peut on dire que l'on ne veut donner le focus à aucun contrôle à l'ouverture de l'activité) ?

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

tiens un exemple, il faut rajouter la ligne window machin dans ton manifest a l'endroit de ton activity:

 <activity android:name="Test"
       		  android:label="TonActivity"
       		  android:windowSoftInputMode="stateHidden">
</activity> 

avec cette config il ne s'ouvrira jamais au start... il doit attendre un edittext ou autre...

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ton aide.

En effet en rajoutant dans le manifest :

android:windowSoftInputMode="stateHidden"

le clavier ne s'ouvre plus automatiquement

Il me reste juste ce petit souci : le focus est donné à mon premier EditText qui se trouve au milieu de ma ScrollView donc quand je lance mon activité, je suis positionné au milieu de celle-ci.

J'aimerai me positionner au début de celle-ci à l'ouverture de mon activité (en fait ne pas donner de focus en automatique au premier EditText).

J'ai essayé de mettre ce bout de code dans le constructeur de l'activité

final ScrollView scrollView = ((ScrollView)findViewById(.R.id.myScrollView));
scrollView.post(new Runnable() {
			@Override
			public void run() {
				scrollView.fullScroll(ScrollView.FOCUS_UP);
			}
		});

Mais cela ne fait rien.

Est ce que quelqu'un aurait une idée ?

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

En fait en cherchant un peu j'ai trouvé cette solution :

  • dans mon xml :

pour mon ScrollView j'ai ajouté ces propriétés :

        android:focusable="true" 
       android:focusableInTouchMode="true"

  • dans mon code :

dans le constructeur, j'ai ajouté ce bout de code :

((ScrollView)findViewByIdR.id.myScrollView).fullScroll(ScrollView.FOCUS_UP);

Avec en plus dans le manifest l'ajout de la directive suivante pour mon activité :

android:windowSoftInputMode="stateHidden"

J'arrive à mes fins... Ce n'est peut être pas la meilleure solution mais elle marche...

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...