texto studio programacion móviles imagen diseño desarrollo curso con cambiar botones boton aplicaciones alinear android layout android-linearlayout relativelayout wrap

android - studio - ¿Cómo ajustar los botones de imagen en un diseño lineal horizontal?



imagebutton android studio (3)

¿Hay alguna forma de ajustar los botones de Imagen en Diseño Lineal Horizontal? ¿O hay alguna otra forma de hacer lo siguiente?

Tengo seis botones de imagen. Supongamos que estos botones están apareciendo en un dispositivo de resolución media como este:

Image button 1 | Image button 2 | Image button 3 | (1st row) Image button 4 | Image button 5 | Image button 6 | (2nd row)

Quiero que estos botones aparezcan en una tableta o en cualquier dispositivo de alta resolución como este:

Image button 1 | Image button 2 | Image button 3 | Image button 4 | (1st row) Image button 5 | Image button 6 | (2nd row)

o así :

Image button 1 | Image button 2 | Image button 3 | Image button 4 | Image button 5 | Image button 6 |

de acuerdo con las pantallas del dispositivo. Por favor ayuda.

Aquí está mi archivo xml principal:

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@layout/back2"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@layout/back2"> <TextView android:layout_width="fill_parent" android:layout_height="50dp" android:background="@layout/button5" android:gravity="center" android:orientation="vertical" android:text="@string/hello" android:textColor="#D5D5D5" android:textSize="20sp" /> <com.google.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adUnitId="a150c75f96c352c" ads:adSize="BANNER" ads:loadAdOnCreate="true"/> <org.core.mywindows8.FlowLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:f="http://schemas.android.com/apk/res/org.core.mywindows8" f:horizontalSpacing="6dip" f:verticalSpacing="12dip" f:fitContent="true" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/morange1" android:drawableTop="@drawable/tutorials" android:textColor="#ffffff" android:id="@+id/button1" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/tutorials" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/mviolet" android:drawableTop="@drawable/themes" android:textColor="#ffffff" android:id="@+id/button2" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/themes" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/mblu2" android:drawableTop="@drawable/gadgets" android:textColor="#ffffff" android:id="@+id/button3" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/gadgets"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/mgree" android:drawableTop="@drawable/network" android:textColor="#ffffff" android:id="@+id/button4" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/networking"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/mblu3" android:drawableTop="@drawable/search" android:textColor="#ffffff" android:id="@+id/button5" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/win8index"/> </org.core.mywindows8.FlowLayout> </LinearLayout> </ScrollView>


En general, crearía archivos XML de diseño alternativo para diferentes configuraciones. Cada una de estas carpetas tendrá un archivo xml con el mismo nombre (el que usa cuando llama a setContentView() en su Actividad).

/res/layout/ /res/layout-sw600dp/ /res/layout-sw720dp/

Si su proyecto no tiene estas carpetas, puede continuar y hacerlas usted mismo. Esto le dice al sistema en tiempo de ejecución que, de acuerdo con el ancho más pequeño disponible del dispositivo en píxeles independientes de la densidad, se utilizará uno de estos tres diseños. sw600dp se recomienda para especificar "pantallas grandes" como tabletas de 7 pulgadas; sw720dp se recomienda para especificar "pantallas xlarge" como tabletas de 10 pulgadas. Estos números pueden ser arbitrarios.

También podría hacer lo que Vivek Khandelwal sugirió usar una implementación de FlowLayout, pero eso puede funcionar o no exactamente como lo desea.


Puede usar FlowLayout para esto.

Verifique esto

EDITADO

Agregue la clase, los estilos y los atributos necesarios a su proyecto desde el enlace que le di. Y use este diseño agregándolo a su diseño XML.

Mencionado en el Proyecto Git .. Copie todos los archivos del Proyecto Git a sus proyectos

User FlowLayout en su lugar LinearLayout en XML

<com.yourpackage.FlowLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > </com.yourpackage.FlowLayout>

Y luego agregue su vista secundaria en ese FlowLayout, puede estar solo en XML o en tiempo de ejecución.

Otros parámetros soportados son:

xmlns:f="http://schemas.android.com/apk/res/your.namespace" f:horizontalSpacing="6dip" f:verticalSpacing="12dip" f:orientation="vertical" f:layout_horizontalSpacing="32dip" f:layout_verticalSpacing="32dip"

He agregado un soporte para ajustar el contenido en una línea. Obtener mi fuente github

Para hacer que esto funcione necesita dar un atributo más como fitContent a verdadero para su diseño.

f: fitContent = "verdadero"

Responda por sus comentarios

f: verticalSpacing = "12dip" - Se usa para especificar el espaciado vertical para todo el FlowLayout. es decir, cada vista / botón secundario tendrá el espaciado vertical.

Ejemplo

<org.apmem.tools.layouts.FlowLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" f:verticalSpacing="12dip" > </org.apmem.tools.layouts.FlowLayout>

Considerando que, f: layout_verticalSpacing = "32dip" se especifica a un botón secundario ya que especificamos el peso

Ejemplo

<Button xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" f:layout_verticalSpacing="32dip" > </Button>