Chaque fois que je commence cette activité, elle commence toujours par le bas - défilée jusqu'en bas. Je ne fais rien de bizarre dans l'activité OnCreate (ou n'importe où d'ailleurs) dont je m'attendrais à changer la position du défilement. J'ai essayé de définir le focus sur le contrôle focusable le plus haut et la méthode scrollto, mais aucun d'eux ne fonctionne. D'ailleurs, aucune de mes autres activités n'a ce problème. Voici la mise en page:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_refresh_update_header"
android:textSize="18sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="\n"
android:textSize="4sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Variable:"
android:textSize="18sp"/>
<Spinner
android:id="@+id/edit_refresh_variables_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="\n"
android:textSize="4sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Network:"
android:textSize="18sp"/>
<RadioGroup
android:id="@+id/widget1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<RadioButton
android:text="Web"
android:id="@+id/edit_refresh_update_rb_web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="NetRadioButtonSelected"
android:checked="true"/>
<RadioButton
android:text="Socket Server"
android:id="@+id/edit_refresh_update_rb_socket_server"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="NetRadioButtonSelected"/>
</RadioGroup>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="\n"
android:textSize="4sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Socket server request type:"
android:textSize="18sp"/>
<Spinner
android:id="@+id/edit_refresh_socket_server_req_types_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="\n"
android:textSize="4sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Socket server body:"
android:textSize="18sp"/>
<EditText
android:layout_width="match_parent"
android:id="@+id/edit_refresh_update_ss_body"
android:layout_height="wrap_content"
android:enabled="false"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="\n"
android:textSize="4sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Url:"
android:textSize="18sp"/>
<EditText
android:layout_width="match_parent"
android:id="@+id/edit_refresh_update_url"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="\n"
android:textSize="4sp"/>
<Button
android:text="Save refresh update"
android:id="@+id/edit_refresh_save_btn"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginBottom="20dp"
android:layout_alignParentBottom="true"
android:onClick="SaveRefreshUpdate">
</Button>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="\n"
android:textSize="4sp"/>
</LinearLayout>
</ScrollView>
Réponses:
Lorsque Android démarre une activité, certains contrôles doivent être mis au point. Lorsqu'il n'y a pas de contrôle désigné pour prendre le focus, le système choisit le premier contrôle éligible qui souhaite le focus. Si vous définissez la propriété suivante dans votre LinearLayout,
android:focusableInTouchMode="true"
vousLinearLayout
serez concentré sur le démarrage et votre activité ne défilera pas jusqu'enEditText
bas.la source
LinearLayout
intérieur duScrollView
, et non à la vue de défilement elle-même.Au lieu d'éléments polluants dans votre mise en page, vous pouvez ajouter ceci à votre activité / classe:
De cette façon, ce n'est pas un élément dans votre scrollView qui obtient le focus, c'est votre scrollView en tant que conteneur qui obtient le premier focus, se déplaçant vers la vue enfant après cela.
la source
Vous pouvez essayer ce code:
[N: B] [lien de référence] 1
la source
Avec ce que devmiles.com a dit.
Si vous appelez requestLayout () sur une vue en bas de votre mise en page linéaire, cela peut voler le focus de votre vue la plus haute. Appelez donc simplement requestFocus () sur la vue la plus en haut de la disposition linéaire après avoir appelé requestLayout () sur une vue inférieure.
la source
Avez-vous essayé d'utiliser la méthode fullScroll? Http: //developer.android.com/reference/android/widget/ScrollView.html#fullScroll (int)
la source
Pour le développement Xamarin Android, si vous souhaitez faire une solution @Graeme,
la source
Rendez-le simplement non focalisable dans onCreate ()
et utilise
et il ne défilera pas jusqu'à Edittext la prochaine fois, un fragment ou une activité est créé.
la source
Ajoutez ces deux lignes dans votre
ScrollView
la source
Je ne sais pas pourquoi mais tu pourrais expérimenter avec
dans votre
onCreate
pour le faire défiler manuellement là où vous le souhaitez.la source
scrollView.requestFocus(View.FOCUS_UP)
a résolu mon problème lorsque je voulais que la vue de dessus soit visible. La spécification du paramètre de direction à la méthoderequestFocus(int direction)
est un bon moyen de contrôler laScrollView
position. Plus de détails ici .la source
Dans mon cas, j'avais un
VideoView
intérieur unConstraintLayout
intérieur unScrollView
. LeVideoView
volais toujours mise au point, et il y a des problèmes avec elle . La solution consiste à utiliser un fichierTextureView
. J'espère que cela aide quelqu'un, cela m'a coûté une heure au moins :)la source