Pourquoi mon activité Android commence-t-elle toujours à se dérouler vers le bas?

Chaque fois que je démarre cette activité, elle commence toujours par un fond d'écran, se déroule tout au long du chemin. Je ne fais rien d'étrange dans l'activité OnCreate (ou n'importe où pour l'essentiel) que je m'attends à changer la position de défilement. J'ai essayé de mettre l'accent sur le contrôle focalisable le plus haut, et la méthode scrollto, mais aucun d'entre eux ne fonctionne. En outre, aucune de mes autres activités n'a de 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> 

  • Détectez s'il existe une connexion Internet disponible sur Android
  • Android Studio: Création de mises en page de paysage
  • Erreur lors de l'analyse du contenu Android sdk et de l'initialisation des outils java dans eclipse
  • PreferenceFragment.findPreference renvoie toujours NULL
  • Afficher une chaîne HTML formatée
  • Bibliothèque de support Gradle et Android
  • Android UnsatisfiedLinkError avec OpenCV 2.4.2
  • Le périphérique virtuel exécuté dans Genymotion est périodiquement déconnecté dans ADB
  • Comment détecter quand un interrupteur est glissé, pas cliqué
  • Problème d'orientation de la caméra OpenCV
  • Android - Transformez l'appareil photo en flux RTMP
  • Ajouter une marge au-dessus du premier élément ListView (et ci-dessous en dernier) dans Android
  • 7 Solutions collect form web for “Pourquoi mon activité Android commence-t-elle toujours à se dérouler vers le bas?”

    Lorsque Android démarre une activité, un certain contrôle doit se concentrer. Lorsqu'il n'y a pas de contrôle désigné pour prendre l'accent, le système choisit le premier contrôle admissible qui veut se concentrer. Si vous définissez la propriété suivante dans votre LinearLayout – android:focusableInTouchMode="true" votre LinearLayout sera concentré sur le démarrage et votre activité ne se EditText pas vers EditText en bas.

    Au lieu de polluer des éléments dans votre mise en page, vous pouvez l'ajouter dans votre Activité / Classe:

      ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView); scrollView.setFocusableInTouchMode(true); scrollView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS); 

    De cette façon, ce n'est pas un élément dans votre scrollView. Obtenez la mise au point, c'est votre scrollView en tant que conteneur qui devient la première mise au point, en passant sur la vue enfant après cela.

    Vous pouvez essayer ce code:

     scroller.post(new Runnable() { public void run() { scroller.fullScroll(ScrollView.FOCUS_DOWN); } }); 

    [N: B] [lien de référence] 1

    Avez-vous essayé d'utiliser la méthode FullScroll? Http: //developer.android.com/reference/android/widget/ScrollView.html#fullScroll (int)

     yourScrollView.fullScroll(ScrollView.FOCUS_UP); 

    Avec ce que devmiles.com a dit.

    Si vous définissez la propriété suivante dans votre LinearLayout – android: focusableInTouchMode = "true", votre LinearLayout sera concentré sur le démarrage et votre activité ne se déplacera pas vers EditText en bas.

    Si vous appelez requestLayout () sur une vue au bas de votre mise en page linéaire, cela pourrait attirer l'attention de votre point de vue supérieur. Alors, il suffit d'appeler requestFocus () sur la vue la plus haute dans la disposition linéaire après l'appel de requestLayout () sur une vue inférieure.

    Je ne sais pas pourquoi, mais vous pourriez expérimenter

     ScrollView sv = (ScrollView) findViewById(R.id.scroll); sv.scrollTo(0,0); 

    Dans votre onCreate pour le défiler manuellement vers l'endroit où vous l'aimez.

    Pour le développement Android de Xamarin, si vous voulez faire la solution @Graeme, alors:

     // Set Focus to ScrollView ScrollView scrollView = (ScrollView)FindViewById(Resource.Id.scrollView); scrollView.FocusableInTouchMode = true; scrollView.DescendantFocusability = Android.Views.DescendantFocusability.BeforeDescendants; 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.