Ridimensionare i pulsanti in base al dispositivo su cui gira

di Anonimizzato18926 il
4 risposte
Ciao, per imparare a programmare bisogna studiare e applicare le cose studiate
ho pensato di creare un'app calcolatrice, sistemato tutti i pulsanti per bene con un dispositivo ma ovviamente se cambio dispositivo con uno piu' piccolo non entra nello schermo perche' i pulsanti devono essere ridimensionati
c'e' un qualcosa che lo fa da solo oppure devo leggere le dimensioni dello schermo e poi ridimensionare tutto tramite codice scritto da me?
utilizzo android studio

metto il layout da me utilizzato solo con pochi pulsanti tanto per capire come'
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="itappandroid.ribosoft.capro57ver001.MainActivity"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="@android:color/darker_gray">


<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="60dp"
android:layout_height="40dp"
android:text="1"
android:id="@+id/btmUno"
android:layout_alignParentStart="false"
android:background="#f5e7d5"
android:textColor="#002fff"
android:layout_alignBottom="@+id/button2"
android:textSize="10dp"
android:layout_alignLeft="@+id/btmZero" />


<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="60dp"
android:layout_height="40dp"
android:id="@+id/button2"
android:layout_alignParentStart="false"
android:layout_above="@+id/button"
android:layout_alignLeft="@+id/button"
android:text="RST"
android:background="#d0d0d0"
android:layout_marginBottom="20dp"
android:textSize="10dp"
android:textColor="#20ffffff" />


<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="60dp"
android:layout_height="40dp"
android:text="."
android:id="@+id/btmPunto"
android:background="#f5e7d5"
android:textColor="#002fff"
android:textSize="10dp"
android:layout_marginLeft="14dp"
android:layout_alignTop="@+id/btmZero"
android:layout_centerHorizontal="true" />


<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="60dp"
android:layout_height="40dp"
android:text="0"
android:id="@+id/btmZero"
android:layout_alignParentBottom="false"
android:layout_alignParentStart="false"
android:layout_alignParentLeft="false"
android:layout_alignParentTop="false"
android:background="#f5e7d5"
android:textColor="#002fff"
android:layout_toRightOf="@+id/button"
android:layout_alignBottom="@+id/button"
android:textSize="10dp"
android:layout_marginLeft="14dp" />


<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="60dp"
android:layout_height="40dp"
android:text="R/S"
android:id="@+id/button"
android:layout_alignParentStart="false"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="#d0d0d0"
android:textColor="#20ffffff"
android:textSize="10dp"
android:layout_alignParentEnd="false"
android:layout_centerHorizontal="true"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp" />


</RelativeLayout>

4 Risposte

  • Ciao e benvenuto sul forum!
    La soluzione più semplice che mi viene in mente è quella di usare per ogni riga della tastiera un LinearLayout con orientamento orizzontale e dentro metterci dei button con width=0dp e weight=1.
    In questo modo android calcolerà automaticamente la dimensione da applicare ai tasti per renderli tutti uguali. Ovviamente non è detto che questa soluzione sia la migliore, ad esempio perché per ogni tasto android deve calcolare più volte lo spazio disponibile e ridimensionare i pulsanti di conseguenza.
  • Stavo pensando ad un layout diverso da Relative, non mi sembra proprio adatto per quello che voglio realizzare
    faccio delle prove con la tua soluzione, ma non mi fido
  • Beh non è detto che una cosa escluda l'altra. Puoi usare un LinearLayout dentro un RelativeLayout: il primo si occuperà solo di disporre i pulsanti, l'altro creerà l resto del fragment/activity
  • Risolto con una tablelayout dentro una linearlayout
Devi accedere o registrarti per scrivere nel forum
4 risposte