Cómo ajustar el tamaño de los botones según el tamaño de la pantalla en Android Studio

Soy nuevo para el desarrollo de Android, estoy haciendo la calculadora en el estudio de android. Mi calculadora funciona bien, pero hay un problema con su diseño i instalarlo en mi tableta y el botón eran pequeños como i diseño en adroid studio en el emulador, el tamaño del botón no cambiar, por lo que necesita ayuda para que el tamaño del botón de aumento a medida que cambia el tamaño de la pantalla

Mi diseño de calculadora en Android Studio

Introduzca aquí la descripción de la imagen

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff000000"> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/clear" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="110dp" android:background="@drawable/clear_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/plus_minus" android:layout_alignBottom="@+id/clear" android:layout_toRightOf="@+id/clear" android:layout_toEndOf="@+id/clear" android:layout_marginLeft="-11dp" android:background="@drawable/pm_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/per" android:layout_alignBottom="@+id/plus_minus" android:layout_toRightOf="@+id/plus_minus" android:layout_toEndOf="@+id/plus_minus" android:layout_marginLeft="-11dp" android:background="@drawable/per_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/div" android:layout_alignTop="@+id/per" android:layout_toRightOf="@+id/per" android:layout_toEndOf="@+id/per" android:layout_marginLeft="-11dp" android:background="@drawable/div_btn" android:layout_alignParentRight="false" /> <TextView android:layout_width="fill_parent" android:layout_height="70dp" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/disp" android:layout_above="@+id/plus_minus" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:textColor="@android:color/white" android:textSize="32sp" android:inputType="none" android:textStyle="normal" android:gravity="right" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/seven" android:layout_below="@+id/clear" android:layout_toLeftOf="@+id/plus_minus" android:layout_toStartOf="@+id/plus_minus" android:layout_marginTop="-10dp" android:layout_alignParentTop="false" android:layout_alignParentLeft="true" android:background="@drawable/seven_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/eight" android:layout_alignTop="@+id/seven" android:layout_alignLeft="@+id/plus_minus" android:layout_alignStart="@+id/plus_minus" android:background="@drawable/eight_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/nine" android:layout_alignBottom="@+id/seven" android:layout_alignLeft="@+id/per" android:layout_alignStart="@+id/per" android:background="@drawable/nine_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/mul" android:layout_alignTop="@+id/nine" android:layout_alignLeft="@+id/div" android:layout_alignStart="@+id/div" android:background="@drawable/mul_btn" /> <Button android:layout_width="103dp" android:layout_height="90dp" android:id="@+id/four" android:layout_below="@+id/seven" android:layout_alignRight="@+id/seven" android:layout_alignEnd="@+id/seven" android:layout_marginTop="-10dp" android:layout_alignParentLeft="false" android:background="@drawable/four_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/five" android:layout_alignBottom="@+id/four" android:layout_alignLeft="@+id/eight" android:layout_alignStart="@+id/eight" android:background="@drawable/five_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/six" android:layout_alignTop="@+id/five" android:layout_alignLeft="@+id/nine" android:layout_alignStart="@+id/nine" android:background="@drawable/six_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/sub" android:layout_toEndOf="@+id/nine" android:layout_alignTop="@+id/six" android:layout_alignLeft="@+id/mul" android:layout_alignStart="@+id/mul" android:background="@drawable/min_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/one" android:layout_below="@+id/four" android:layout_alignLeft="@+id/four" android:layout_alignStart="@+id/four" android:layout_marginTop="-10dp" android:layout_alignParentLeft="false" android:background="@drawable/one_btn" /> <Button android:layout_width="203dp" android:layout_height="90dp" android:id="@+id/zero" android:layout_below="@+id/one" android:layout_alignLeft="@+id/one" android:layout_alignStart="@+id/one" android:layout_marginTop="-10dp" android:background="@drawable/zero_btn" android:layout_alignParentLeft="true" android:layout_marginLeft="-7dp" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/two" android:layout_above="@+id/zero" android:layout_alignLeft="@+id/five" android:layout_alignStart="@+id/five" android:background="@drawable/two_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/three" android:layout_below="@+id/five" android:layout_alignLeft="@+id/six" android:layout_alignStart="@+id/six" android:layout_marginTop="-10dp" android:background="@drawable/three_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/add" android:layout_toEndOf="@+id/three" android:layout_below="@+id/six" android:layout_alignLeft="@+id/sub" android:layout_alignStart="@+id/sub" android:layout_marginTop="-10dp" android:background="@drawable/plus_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/dot" android:layout_below="@+id/two" android:layout_alignRight="@+id/three" android:layout_alignEnd="@+id/three" android:layout_marginTop="-10dp" android:background="@drawable/dot_btn" /> <Button android:layout_width="100dp" android:layout_height="90dp" android:id="@+id/equ" android:layout_toEndOf="@+id/dot" android:layout_below="@+id/three" android:layout_alignLeft="@+id/add" android:layout_alignStart="@+id/add" android:layout_marginTop="-10dp" android:background="@drawable/equ_btn" /> </RelativeLayout> 

Tienes que usar layout_weight para lograr lo que quieres, y eso se usará envolviendo cada fila de botones dentro de LinearLayout y todo lo que LinearLayouts más TextView quedará envuelto dentro de un LinearLayout grande en lugar de tu RelativeLayout como el siguiente:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff000000" android:orientation="vertical" android:weightSum="6" > <TextView android:id="@+id/disp" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:inputType="none" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@android:color/white" android:textSize="32sp" android:textStyle="normal" /> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:weightSum="4" > <Button android:id="@+id/clear" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" android:background="@drawable/clear_btn" /> <!-- then the three remaining buttons --> <LinearLayout /> <!-- then the four remaining rows --> <!-- in the last row the "0" button will have layout_weight="2" NOT "1" --> </LinearLayout> </LinearLayout> 

ACTUALIZAR:

Utilice ImageButtons en lugar de Botones para una mejor escalabilidad, y así es como debe usarlo:

  <ImageButton android:id="@+id/clear" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4" android:background="@android:color/transparent" android:src="@drawable/clear_btn" android:scaleType="fitCenter" /> <!-- and so for all Buttons --> 

Tenga en cuenta que hemos cambiado:

1- layout_height : de wrap_content a match_parent .

2- background : quitando el drawable (clear_btn) y haciéndolo transparent .

Y añadimos:

1- src : asignarle el drawable (clear_btn).

2- scaleType : haciendo que fitCenter lo haga fitCenter en todo el área disponible sin arruinar la relación de escalabilidad de imagen.

PS : en caso de que se desee que el botón de tomar todo el tiempo de la zona es escalable o no, cambiar scaleType de fitCenter a fitXY (puede ser que necesitará que para el botón " 0 ").

Al configurar la altura / anchura de un botón en android, el uso de valores de píxeles de densidad fija dará lugar a tamaños exactos en todas las pantallas. El uso de valores de ancho como wrap_content , fill_parent , pesos etc. hará que el botón fill_parent acuerdo con las densidades de pantalla.

Trate de pasar por este enlace una vez: – Mejores prácticas para la interfaz de usuario

Si desea admitir varias pantallas, nunca arrastrar y soltar y cambiar el tamaño de las vistas manualmente.

Puede comprobar el atributo android:layout_weight y LinearLayout

Solución 1: utilice dimens.xml para especificar con y altura para los botones.

Para la tableta, cree los valores de la carpeta-sw600dp, valores-sw720dp y ponga su dimens.xml dentro.

Solución 2:

 Use linearlayout and layout_weight property. 
  • Obtener atributos con estilo para el niño de la definición de estilo de los padres
  • Error en el archivo xml de maven pom: Creando un proyecto Android
  • Java no reconoce el ID de elementos XML de Android
  • Spinner estilo de color en Android
  • Establecer una fuente específica en un styles.xml
  • ¿Definir un estilo de pintura, color, etc en XML?
  • Cómo manejar clics de botón utilizando el XML onClick dentro de Fragmentos
  • Interpolador personalizado de Android con xml
  • ¿Cómo acceder a <item> desde un recurso <string-array> en un XML android?
  • Haga referencia al id de una vista dentro de un diseño "include" en xml
  • Cómo alinear el botón de acción flotante al centro
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.