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
- Cómo agregar una pista en spinner en XML
- ¿Cómo puedo poner utf-16 caracteres en Android cadena de recursos?
- Alinear texto en el centro - Spinner
- Android: guardar el estado del diseño cambiado dinámicamente
- Android: ¿Crear ListView en XML?
<?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>
- Barra de herramientas superpone la barra de estado
- Configuración de eclipse para quejarse de cadenas codificadas duras para las preferencias de Android xml
- Selector xml de Android para diseños
- Programar '? SelectableItemBackground' en la vista de Android
- RecyclerVista el espacio entre los elementos que se expanden al desplazarse
- ¿Crear un tipo de datos XML personalizado?
- Adición de una vista personalizada a XML ... pero con un tipo GENERIC
- Cómo agregar TableRow de xml a TableLayout mediante programación?
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.
- Anulación de los atributos de estilo referenciados
- Los eventos de análisis de Firebase no muestran valor