Ridimensionare i pulsanti in base al dispositivo su cui gira

di il
4 risposte

Ridimensionare i pulsanti in base al dispositivo su cui gira

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

  • Re: Ridimensionare i pulsanti in base al dispositivo su cui gira

    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.
  • Re: Ridimensionare i pulsanti in base al dispositivo su cui gira

    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
  • Re: Ridimensionare i pulsanti in base al dispositivo su cui gira

    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
  • Re: Ridimensionare i pulsanti in base al dispositivo su cui gira

    Risolto con una tablelayout dentro una linearlayout
Devi accedere o registrarti per scrivere nel forum
4 risposte