entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Android - Diseñando pantalla (LinearLayout vs RelativeLayouts)

Hola.

Estoy diseñando una pantalla y empece añadiendo LinearLayouts. Tenía dudas si el proceso era correcto con lo cual pregunte en el foro. (Android - ¿Cual es el máximo de LinearLayouts posibles a utilizar en una Activity?)

Me gusto la respuesta recibida y por ello abro este post.

Creo que lo ideal sería utilizar RelativeLayouts pero no se hasta que punto. Alguna sugerencia para estructurar bien la pantalla?

Adjunto captura de pantalla de diseño.
Captura de pantalla del diseño

Saludos!

1 Respuesta

1voto

cobasESP Puntos19650

Bueno, ahora te contesto a esto. A ver es sencillo, android trabaja con un root layout o layout principal, de este cuelgan mas layouts o elementos, siempre el rootlayout debe ser relative ya que es el mejor layout para ordenar elementos, pero solo uno, ahora dentro del relative layout intenta ordenar los elementos en linear layouts, y asi en vez de mover elementos uno por uno en la pantalla y que se te descuadren, muevas grupos de elementos contenidos dentro de un linear layout, me explico basandome en la imagen que pones:

Tu vista cuelga de un relative layout.
Local, visitante lo meteria en un linearlayout(Horizontal).

Los dos balones dentro de otro horizontal, asi al moverlo muevo todo en conjunto no solo una cosa, con lo que conseguirias que se te descuadre la vista entera y tengoas que voler a colcoarlo todo y es frustante.

para lo de cuarto, y el marcado con los botones a los lados, ahi si usaria otro relative layout que colocaria debajo del linear de los balones y dentro meteria eso.

Y por ultimo las filas de botones serian linear layout uno por cada fila de botones.

Con esto consigo agrupar todos los elementos en layouts y asi al mover un layout muevo de golpe 4 botones o mas y se que todo quedara colocado de un plumazo.

espero que me hayas entendido.

0voto

egoitz_gonzalez comentado

Muy interesante todo lo que me comentas. Esta siendo de gran ayuda la verdad.

En estos momentos tengo problemas para colocar correctamente los botones de sumar y restar cuartos. Como puedes ver en la captura que adjunto no se centran respecto al "cajon" (imageView) del cuarto.

enter image description here

Adjunto código por supuesto. (Respecto a ese apartado unicamente).

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/black"
        android:layout_below="@+id/activity_main_linear_marcador_general">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cuarto"
            android:textColor="@color/white"
            android:id="@+id/activity_main_tv_cuarto"
            android:layout_centerHorizontal="true"
            android:layout_margin="10dp"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/activity_main_img_cuarto"
            android:src="@drawable/img_marcador_cuartos"
            android:layout_below="@+id/activity_main_tv_cuarto"
            android:layout_centerHorizontal="true"
            android:layout_margin="10dp"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/boton_restar_cuartos"
            android:id="@+id/activity_main_btn_cuarto_menos"
            android:layout_toLeftOf="@+id/activity_main_img_cuarto"
            android:layout_below="@+id/activity_main_tv_cuarto"
            android:layout_centerVertical="true"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/activity_main_btn_cuarto_plus"
            android:background="@drawable/btn_sumar_cuartos"
            android:layout_below="@+id/activity_main_tv_cuarto"
            android:layout_toRightOf="@+id/activity_main_img_cuarto"/>

    </RelativeLayout>

0voto

cobasESP comentado

mete el boton del mas el menos y el cajon cuadrado en otro linear layout y este linearlayout le das la propiedad gravity:center, veras como se soluciona.

aclaro linear layout negro donde pone 4 y debajo de este pones otro linear layout negro con lo que te e dicho

0voto

egoitz_gonzalez comentado

Hola.

Antes de leer tu respuesta se me ocurrió que podría solucionarlo con el atributo layout_marginTop de los ImageBUtton (Los botones plus y minus).
"android:layout_marginTop="20dp"

Que te parece? según la vista previa de Android Studio, se ve bien en dispositivos tanto grandes como pequeños.

0voto

cobasESP comentado

Los margenes son muy utiles pero no te recomendaria abusar de ellos mucho, ya que no es lo mismo una pantalla grande, que una densidad de pixeles grande (resolucion).
Acostumbrate a cuadrar todo con layout, si ves que no pues como ultimo recurso tira de margenes.

0voto

egoitz_gonzalez comentado

Seguí tus indicaciones pero como ves queda un "pequeño" detalle. Adjunto el resultado que obtengo. Como ves no se aprovecha el 100% de la pantalla.

Se puede apreciar que el resultado final se acerca a la idea inicial pero no consigo escalarla correctamente.

screen

Adjunto el código. (Un poco extenso pero en definitiva es lo que me indicaste).
Código

0voto

cobasESP comentado

Pon el relative layout principal en fill_parent, tanto el height como el width, e intenta poner margenes top y bottom a cada linear layout y lo vas a justando, ya lo tienes.

0voto

egoitz_gonzalez comentado

El relative layout principal ya lo tengo en fill_parent. Tanto el width, como el height.

Ahora debo de corregir todo mediante los margenes top y botton? no es muy exagerado?

0voto

cobasESP comentado

No, es mejor que hacerlo a mano arrastrando los linear por el relative layout, ya que queda menos aleatorio, y los margenes se adaptan a todo tipo de pantallas, luego puedes probarlo, en android studio en la vista del layout hay una opcion donde estan los tipos de pantalla que pone all previews, y se te abre una ventana con todos los tipo de pantalla a la vez y de un vistazo ves que queda bien en todos.

Aun asi, hay un metodo para crear layouts personalizados para distintos tipos de pantalla, si este metodo no se adapta bien por cualquier problema (como por ejemplo la complejidad de este) puedes crear distintas capretas layouts con un nombre predeterminado y android pillara los layouts de estas carpetas depende del dispositivio. Te dejo la documentacion oficial de google (esta en ingles)
http://developer.android.com/guide/practices/screens_support.html#NewQualifiers

Pero mas o menos dice que hagas esto:

res/layout/main_activity.xml # Tu carpeta layout original
res/layout-sw600dp/main_activity.xml # Para tablets de 7" o mas
res/layout-sw720dp/main_activity.xml # Para tablets de 10" o mas

y asi si quieres menos o mas puedes ir adaptandolo si ves que tu layout es demasiado complejo para que se adapte por si solo

0voto

egoitz_gonzalez comentado

Gracias.

Creo que al final logre lo que quería. También añadí un Scroll por si es necesario en dispositivos de pantallas muy pequeñas.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta