Autore Topic: Layout indipendente da dispositivo  (Letto 589 volte)

Offline supporto81

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
Layout indipendente da dispositivo
« il: 02 Agosto 2011, 12:47:01 CEST »
0
Ciao ragazzi,
sono nuovo del Forum.
Saluto tutti voi e vi ringrazio per l'aiuto che sarete in grado di fornirmi.

Vi pongo la seguente domanda:

Ho la seguente struttura:

1)LinearLayout:(Vertical)
   1.1 WebView
   1.2 ListView
   1.3 LinearLayout(Orizontal)

Volevo chiedervi come sia possibile ottenere il seguente risultato:
Indipendentemente dal dispositivo e quindi dalla risoluzione di quest'ultimo come posso fare ad ottenere:

1.1 WebView sia sempre 3/8 dello schermo
1.2 ListView sia sempre 4/8 dello schermo
1.3  LinearLayout(Orizontal) sia sempre 1/8 dello schermo.


Grazie

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Layout indipendente da dispositivo
« Risposta #1 il: 02 Agosto 2011, 13:15:28 CEST »
0
Prova a fare in questo modo:
  • setta il android:layout_height dei vari figli a "0dp"
  • setta il android:weightSum del contenitore a 8
  • setta il android:layout_weight dei vari figli rispettivamente a 3, 4 e 1

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Layout indipendente da dispositivo
« Risposta #2 il: 02 Agosto 2011, 13:34:12 CEST »
0
Prova a fare in questo modo:
  • setta il android:layout_height dei vari figli a "0dp"
  • setta il android:weightSum del contenitore a 8
  • setta il android:layout_weight dei vari figli rispettivamente a 3, 4 e 1
sicuro serva il 0dp o basta un wrap_content?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Layout indipendente da dispositivo
« Risposta #3 il: 02 Agosto 2011, 14:11:13 CEST »
0
sicuro serva il 0dp o basta un wrap_content?

Mah, chi lo sa :) Bisognerebbe provare, non ho sotto mano il codice :P

Offline supporto81

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
Re:Layout indipendente da dispositivo
« Risposta #4 il: 02 Agosto 2011, 15:32:27 CEST »
0
Grazie Ricky,
la soluzione proposta è quella ottimale.
Ora tutto funziona.
Grazie mille.

Per la cronaca ho provato anche il wrap_content ma non funziona, in particolare mi scompariva la WebView

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Layout indipendente da dispositivo
« Risposta #5 il: 02 Agosto 2011, 16:53:39 CEST »
+1
sicuro serva il 0dp o basta un wrap_content?

Da quello che ho so, lo 0dp in congiunzione con il _weight ha una funzione specifica che impatta al momento in cui il framework decide quanto spazio dare alle varie View.

Il framework prima alloca alle View lo spazio necessario a visualizzare il relativo contenuto, poi quello che rimane lo distribuisce secondo il weight. Questo meccanismo, usando wrap_content da' risultati spesso fastidiosi, perchè l'allocazione dello spazio varia in funzione del contenuto della View ed è in generale con proporzioni diverse dai weight che avevamo dato.

Mettendo 0dp alla dimensione nella direzione in cui si usa weight, si evita la prima parte dell'allocazione dello spazio, che così è completamente governata dalle proporzioni tra weight. Direi che nel 99% dei casi conviene usare 0dp.

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Layout indipendente da dispositivo
« Risposta #6 il: 02 Agosto 2011, 17:10:46 CEST »
0
Da quello che ho so, lo 0dp in congiunzione con il _weight ha una funzione specifica che impatta al momento in cui il framework decide quanto spazio dare alle varie View.

Il framework prima alloca alle View lo spazio necessario a visualizzare il relativo contenuto, poi quello che rimane lo distribuisce secondo il weight. Questo meccanismo, usando wrap_content da' risultati spesso fastidiosi, perchè l'allocazione dello spazio varia in funzione del contenuto della View ed è in generale con proporzioni diverse dai weight che avevamo dato.

Mettendo 0dp alla dimensione nella direzione in cui si usa weight, si evita la prima parte dell'allocazione dello spazio, che così è completamente governata dalle proporzioni tra weight. Direi che nel 99% dei casi conviene usare 0dp.
spiegazione impeccabile! dopo il commento di supporto comunque, mi è venuto in mente che webview e listView hanno comportamenti strani con il wrap_content e il weight... con textview o linear layout era diverso, ma come dici te, meglio mettere il 0dp
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia