¿Por qué la actividad de mi androide siempre se desplaza hacia abajo?
Cada vez que inicie esta actividad, siempre comienza con el fondo – se desplaza todo el camino hasta el fondo. No estoy haciendo nada extraño en la actividad OnCreate (o en cualquier lugar para el caso) que esperaría cambiar la posición de desplazamiento. He intentado fijar el foco al control focusable superior, y al método del scrollto, pero ninguno de ellos está trabajando. Además, ninguna de mis otras actividades tiene este problema. Aquí está el diseño:
<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>
- ¿Por qué el archivo de diseño xml de Android no reconoce la ayuda de contenido mediante ctrl + espacio?
- Obtener las dimensiones de la pantalla en píxeles
- Disposición de ancho de porcentaje de Android
- Crear vista dinámica, múltiples vistas X veces, obtener / establecer valor para cada grupo
- Barra personalizada de Android Bar stretching image
- Pestañas sin icono
- Recomponer Disposición de actividad para reproducir vídeo en pantalla completa cuando se gira la pantalla
- Disposición de interfaz de usuario de dos pasos: ¿Por qué?
- Android: layout_marginBottom no parece funcionar correctamente en 2.2 (Froyo)
- diseño dentro del diseño android
- Desarrollar una aplicación de Android para apoyar Inglés y árabe "alineación de diseño"
- Uso de JPEG como fondo en Android insted de PNG
- Disposición de Android, cambiar el tamaño por porcentaje y mantener la proporción
Cuando Android inicia una actividad, es necesario que algunos controlan el foco. Cuando no hay un control designado para concentrarse, el sistema elige el primer control elegible que desea enfocar. Si establece la siguiente propiedad en su LinearLayout – android:focusableInTouchMode="true"
su LinearLayout
se centrará en el inicio y su actividad no se desplazará a EditText
en la parte inferior.
En lugar de contaminar elementos en su diseño, puede agregar esto a su Actividad / Clase:
ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView); scrollView.setFocusableInTouchMode(true); scrollView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
De esta manera no es un elemento dentro de tu scrollView obtener foco, es tu scrollView como un contenedor que obtiene el primer enfoque, pasando a la vista del niño después de esto.
Puede probar este código:
scroller.post(new Runnable() { public void run() { scroller.fullScroll(ScrollView.FOCUS_DOWN); } });
[N: B] [enlace de referencia] 1
¿Ha intentado usar el método fullScroll? Http: //developer.android.com/reference/android/widget/ScrollView.html#fullScroll (int)
yourScrollView.fullScroll(ScrollView.FOCUS_UP);
Junto con lo que devmiles.com dijo.
Si establece la siguiente propiedad en su LinearLayout – android: focusableInTouchMode = "true" su LinearLayout se centrará en el inicio y su actividad no se desplazará a EditText en la parte inferior.
Si llama a requestLayout () en una vista en la parte inferior de su diseño lineal, puede robar el foco de su vista más superior. Por lo tanto, sólo tiene que llamar a requestFocus () en la vista más superior en el diseño lineal después de llamar a requestLayout () en una vista inferior.
No sé por qué pero usted podría experimentar con
ScrollView sv = (ScrollView) findViewById(R.id.scroll); sv.scrollTo(0,0);
En su onCreate
para desplazarla manualmente a donde desea que sea.
Para el desarrollo de Android de Xamarin, si desea hacer la solución @Graeme entonces:
// Set Focus to ScrollView ScrollView scrollView = (ScrollView)FindViewById(Resource.Id.scrollView); scrollView.FocusableInTouchMode = true; scrollView.DescendantFocusability = Android.Views.DescendantFocusability.BeforeDescendants;
- Android ==> Análisis de memoria ==> Analizador de memoria Eclipse?
- Android BroadcastReceiver o método simple de devolución de llamada?