Autore Topic: Layout uguale su tutti i dispositivi portatili  (Letto 492 volte)

Offline FraMo

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Layout uguale su tutti i dispositivi portatili
« il: 09 Febbraio 2016, 00:53:17 CET »
0
Ciao vorrei creare il seguente layout per la mia app (ho caricato il jpg dell'immagine)



Premetto che sono inesperto nella creazione grafica dell'app
Vorrei che l'effetto sia uguale su tutti i dispositivi indipendentemente dalla dimensioni del monitor (l'app funziona solo in verticale)

Per il momento ho scritto solo questo codice e non funzione proprio come vorrei, infatti se con Adroid Studio cambio il dispositivo di preview l'immagine non si "auto-riempie"

Codice: [Seleziona]
    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:background="@color/green_back"
                        android:layout_centerVertical="true"
                        android:layout_centerHorizontal="true"
                        android:layout_margin="15dp">

                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:gravity="center|top">

                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Prova"/>

                        </LinearLayout>

                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:orientation="horizontal"
                            android:gravity="center|bottom">

                            <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:orientation="vertical"
                                >

                                <LinearLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content">

                                    <ImageButton
                                        android:id="@+id/button_keypad"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopleft"
                                        />
                                    <ImageButton
                                        android:id="@+id/button_unset"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopcenter"
                                        />
                                    <ImageButton
                                        android:id="@+id/button_logs"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopright"
                                        />

                                </LinearLayout>

                                <LinearLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content">

                                    <ImageButton
                                        android:id="@+id/button_keypad13"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopleft"
                                        />
                                    <ImageButton
                                        android:id="@+id/button_unset2"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopcenter"
                                        />
                                    <ImageButton
                                        android:id="@+id/button_logs3"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopright"
                                        />
                                </LinearLayout>

                                    <LinearLayout
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content">

                                    <ImageButton
                                        android:id="@+id/button_keypad12"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopleft"
                                        />

                                    <ImageButton
                                        android:id="@+id/button_unset22"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopcenter"
                                        />

                                    <ImageButton
                                        android:id="@+id/button_logs32"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:background="@drawable/buttontopright"
                                        />

                                        </LinearLayout>
                                </LinearLayout>
                        </LinearLayout>

                    </RelativeLayout>
« Ultima modifica: 09 Febbraio 2016, 00:55:05 CET da FraMo »

Offline maverik1408

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Layout uguale su tutti i dispositivi portatili
« Risposta #1 il: 09 Febbraio 2016, 08:21:09 CET »
0
Hai fatto qualche prova su dispositivi diversi? Nn sem di avere dimensioni impostate qui di dovrebbe risultare uguale aempre
Maverik @ Google Play Store

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 593
  • Respect: +132
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Layout uguale su tutti i dispositivi portatili
« Risposta #2 il: 09 Febbraio 2016, 10:31:55 CET »
0

Se non ho capito male tu vuoi avere una serie di 9 bottoni che occupano un'area quadrata larga come lo schermo ed alta altrettanto.

Se è corretto, ho una brutta notizia per te.

Di fatto non è possibile ottenere in modo semplice una vista o un layout dinamico e quadrato (rif.)

Quello che puoi fare è utilizzare questo layout:

Codice (XML): [Seleziona]
<?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="#00cc00"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="15dp">

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center|top">

                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Prova"/>

        </LinearLayout>

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal"
                android:gravity="center|bottom">

                <LinearLayout
                        android:id="@+id/squareContainer"
                        android:layout_width="match_parent"
                        android:layout_height="300dp"
                        android:orientation="vertical"
                        >

                        <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="0dp"
                                android:layout_weight="1">

                                <ImageButton
                                        android:id="@+id/button_keypad"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />
                                <ImageButton
                                        android:id="@+id/button_unset"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />
                                <ImageButton
                                        android:id="@+id/button_logs"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />

                        </LinearLayout>

                        <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="0dp"
                                android:layout_weight="1">

                                <ImageButton
                                        android:id="@+id/button_keypad13"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />
                                <ImageButton
                                        android:id="@+id/button_unset2"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />
                                <ImageButton
                                        android:id="@+id/button_logs3"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />
                        </LinearLayout>

                        <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="0dp"
                                android:layout_weight="1">

                                <ImageButton
                                        android:id="@+id/button_keypad12"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />

                                <ImageButton
                                        android:id="@+id/button_unset22"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />

                                <ImageButton
                                        android:id="@+id/button_logs32"
                                        android:layout_width="0dp"
                                        android:layout_height="match_parent"
                                        android:layout_weight="1"
                                        android:background="@android:drawable/alert_light_frame"
                                        />

                        </LinearLayout>
                </LinearLayout>
        </LinearLayout>

</RelativeLayout>

Dove devi ridimensionare da codice il LinearLayout con id squareContainer:

Codice (Java): [Seleziona]
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
               
                setContentView(R.layout.nome_layout);
               
                final ListView cnt = (ListView)findViewById(R.id.squareContainer)
               
                cnt.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                                //Calcolo larghezza schermo
                                WindowManager winMan = (WindowManager)cnt.getContext().getSystemService(Context.WINDOW_SERVICE);
                                DisplayMetrics metrics = new DisplayMetrics();
                                winMan.getDefaultDisplay().getMetrics(metrics);
                                int width = metrics.widthPixels;
                               
                                //Imposto altezza pari a larghezza
                                ViewGroup.LayoutParams par = cnt.getLayoutParams();
                                par.height = width;
                                cnt.setLayoutParams(par);
                        }
                }, 500);
        }
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline iClaude

  • Utente normale
  • ***
  • Post: 183
  • Respect: +13
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 10
Re:Layout uguale su tutti i dispositivi portatili
« Risposta #3 il: 09 Febbraio 2016, 11:18:34 CET »
0
Io utilizzerei un RelativeLayout e per la parte dei bottoni un TableLayout facendo l'inflating dinamico dei Button.
Cmq è probabile per gli schermi più grandi dover prevedere un layout alternativo.

Offline FraMo

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Re:Layout uguale su tutti i dispositivi portatili
« Risposta #4 il: 10 Febbraio 2016, 16:19:35 CET »
0
Grazie dell'auito sono riuscito nel mio intento, ho però un'altro problema nel button il testo non si riscala:

Codice: [Seleziona]
     <Button
                                android:id="@+id/buttontopleft"
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:background="@drawable/buttontopleft"
                                android:layout_margin="5dp"
                                android:text="PROVA"
                                />
« Ultima modifica: 10 Febbraio 2016, 16:26:34 CET da FraMo »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 593
  • Respect: +132
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Layout uguale su tutti i dispositivi portatili
« Risposta #5 il: 10 Febbraio 2016, 16:37:16 CET »
0
Il ridimensionamento del testo non è supportato nativamente su Android.

Prova questa libreria: https://github.com/grantland/android-autofittextview
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.