Desplazamiento de texto por encima de los botones, botones fijos en la parte inferior
Tengo dificultades para obtener los resultados del diseño de GUI que deseo en una aplicación para Android.
Una breve descripción de lo que quiero:
- Cómo depurar estilos de interfaz de usuario de Android
- Cambiar el progreso
- ¿Cómo verificar el desarrollo (digital) de píxeles perfectos en Android?
- ¿Mueve los diseños cuando se muestra el teclado suave?
- Doble control deslizante android
La GUI debe incluir dos TextViews y cuatro botones.
Los cuatro Botones deben ser colocados horizontalmente, todos en la misma fila y fijados en la parte inferior derecha de la pantalla.
El primero de los dos TextViews es comenzar en la parte superior de la pantalla, con un contenido de texto que varía de una línea a muchas decenas de líneas, más de lo que cabrá en la pantalla sin desplazamiento. Por lo tanto, desplazamiento es a veces necesario para ver todos los contenidos. Incluso cuando el desplazamiento es necesario, los botones no son para participar en el desplazamiento: siempre deben permanecer fijos en una sola fila en la parte inferior derecha de la pantalla. Cuando el desplazamiento es necesario, el texto de desplazamiento debe estar siempre por encima de los botones – los botones no deben superponer el texto.
El segundo de los dos TextViews debe aparecer inmediatamente debajo del primer TextView, y normalmente sólo agregará una o dos líneas a la longitud total del texto. Cuando es necesario desplazarse, el segundo TextView debe desplazarse con el primer TextView, siempre apareciendo inmediatamente debajo del primer TextView.
Otras restricciones incluyen que deseo que el diseño aparezca decente en todos los dispositivos Android siguientes, tanto en los diseños de pantalla verticales como horizontales:
- Dispositivos MDPI (320×240) de Android 1.5 API3 QVGA
- Dispositivos MDPI Android 1.5 API3 HVGA
- Android 1.6 API4 dispositivos QVGA LDPI
- Dispositivos Android 2.3 API10 WVGA800
- Todo con pantallas entre los dispositivos anteriores
Me preocuparé por las tabletas otro día (como mañana).
–
He intentado muchas combinaciones diferentes de Layouts, pero nada todavía ha llegado muy cerca de la meta.
(Con algunas de las combinaciones de diseño que he intentado, puedo arreglar los botones en la parte inferior izquierda de la pantalla con RelativeLayout, pero todo lo que intento con el texto de escaneo siempre resulta con el desplazamiento de texto detrás de los botones – los botones superponen el texto. No he pensado conseguir los botones para alinear a la parte inferior derecha.)
Si alguien está dispuesto a ayudarme a entender esto, el ejemplo de diseño xml a continuación es un punto de partida de conversación, pero definitivamente no logra el resultado de objetivo, como se demuestra en las siguientes capturas de pantalla, generadas utilizando este mismo ejemplo de diseño xml. (Aunque algunas de las capturas de pantalla muestran el mismo problema, ayudan a mostrar dónde estoy con las diferentes pantallas.)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Text View 1. Text varies from a few lines to many more lines than what fits on the screen. Scrolling is necessary to see it all." /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Text View 2. Short text entry sits below Text View 1." /> </LinearLayout> </ScrollView> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button_1" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="Button 1" /> <Button android:id="@+id/button_2" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="Button 2" /> <Button android:id="@+id/button_3" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="Button 3" /> <Button android:id="@+id/button_4" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="Button 4" /> </LinearLayout> </LinearLayout>
1.5_API3_HVGA_Horizontal_MDPI – short_text:
Problema: Los botones deben alinearse con la parte inferior derecha de la pantalla.
–
1.5_API3_HVGA_Vertical_MDPI – short_text:
Problema: Los botones deben alinearse con la parte inferior derecha de la pantalla.
–
1.5_API3_QVGA_240x320_MDPI – short_text:
Problema: Se ha roto el botón 4. Prefiera el texto en los tres primeros botones para envolver cuando sea necesario, dejando suficiente espacio para mostrar el 4to botón.
–
1.5_API3_QVGA_320x240_MDPI – short_text:
Problema: Los botones deben alinearse con la parte inferior derecha de la pantalla.
–
1.6_API4_QVGA_Horizontal_LDPI – long_text:
Problema: Cuando el texto casi llena la pantalla, la fila de botones se rompe. La fila de botones no se debe romper, y debe fijarse en la parte inferior derecha de la pantalla. El texto debe desplazarse por encima de los botones.
–
1.6_API4_QVGA_Horizontal_LDPI – short_text:
Problema: Los botones deben alinearse con la parte inferior derecha de la pantalla.
–
1.6_API4_QVGA_Horizontal_LDPI – very_long_text, barra de desplazamiento en la parte superior:
Problema: Los botones no aparecen en la pantalla. Deben fijarse en la parte inferior derecha de la pantalla.
–
1.6_API4_QVGA_Horizontal_LDPI – muy_long_texto, barra de desplazamiento en la parte inferior:
Problema: los botones no se encuentran donde se encuentran, aunque la barra de desplazamiento de texto está en la parte inferior. Deben fijarse en la parte inferior derecha de la pantalla.
–
1.6_API4_QVGA_Vertical_LDPI – short_text:
Problema: Los botones deben alinearse con la parte inferior derecha de la pantalla.
–
¿Algún consejo?
–
Información adicional: Cuando intento usar RelativeLayout, y arreglar los botones en la parte inferior de la pantalla con android:layout_alignParentBottom="true"
, entonces mi problema es que no sé cómo arreglar la parte inferior de la vista de desplazamiento con el Parte superior de los botones. Uso de android:layout_alignBottom="@id/buttons"
sólo alinea la parte inferior de la vista de desplazamiento con la parte inferior de los botones, pero luego los botones superponen el texto, como esto:
–
Actualización: El problema de la fijación de los botones a la parte inferior derecha, con el texto de desplazamiento por encima de los botones se resuelve.
Aquí está el XML de diseño cambiado que funciona hasta ahora (pegue más texto en la vista de texto 1 si desea ver el desplazamiento):
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ScrollView android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Text View 1. Text varies from a few lines to many more lines than what fits on the screen. Scrolling is necessary to see it all." /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Text View 2. Short text entry sits below Text View 1." /> </LinearLayout> </ScrollView> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right"> <Button android:id="@+id/button_1" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="Button 1" /> <Button android:id="@+id/button_2" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="Button 2" /> <Button android:id="@+id/button_3" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="Button 3" /> <Button android:id="@+id/button_4" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="Button 4" /> </LinearLayout> </LinearLayout>
Tengo un problema restante para el que voy a publicar una nueva pregunta.
- Andengine: Añade una vista que contiene los controles de interfaz de usuario en la parte superior de andengine usando addContentView
- Cómo escribo una fracción en el estudio android
- Cómo obtener texto de EditText?
- Android: TextInputLayout no centrará la pista
- El tutorial de superposición aparece detrás de la interfaz de usuario principal (Android)
- Pasar al siguiente fragmento con un clic de botón
- ¿Cómo se muestra el valor actual de una preferencia de Android en el resumen de preferencias?
- ¿El uso de Android del término flinger?
Establezca el valor de layout_height de ScrollView en 0dp y establezca su valor de layout_weight en 1. Debe empujar los botones a la parte inferior de la pantalla, pero no más.
Cambiar el diseño utilizado para un RelativeLayout, esto le ayudará a adjuntar los botones en la parte inferior de la pantalla.
También estoy de acuerdo con el uso de layout_height = "0dip" y layout_weight = "1" en el scrollable que puede ser de varrying longitud.
EDITAR
Acabo de cambiar el código a esto y funcionó bien para mí en mi HTC Desire. Debería funcionar en sus casos de prueba. Acabé usando un diseño lineal, pero parece bien.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ScrollView android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" > <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Text View 1. Text varies from a few lines to many more lines than what fits on the screen. Scrolling is necessary to see it all." /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Text View 2. Short text entry sits below Text View 1." /> </LinearLayout> </ScrollView> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button_1" android:layout_height="fill_parent" android:layout_width="0dip" android:layout_weight="1" android:text="Button 1" /> <Button android:id="@+id/button_2" android:layout_height="fill_parent" android:layout_width="0dip" android:layout_weight="1" android:text="Button 2" /> <Button android:id="@+id/button_3" android:layout_height="fill_parent" android:layout_width="0dip" android:layout_weight="1" android:text="Button 3" /> <Button android:id="@+id/button_4" android:layout_height="fill_parent" android:layout_width="0dip" android:layout_weight="1" android:text="Button 4" /> </LinearLayout> </LinearLayout>
- ¿Cómo acceder a la base de datos cuando se desarrolla en el teléfono Android?
- ¿Cómo manejar savedInstanceState cuando se usa ViewPager?