Domanda

Ho una situazione in cui alleno un raccoglitore a colori. Se è fatto in modalità ritratto, va tutto bene. Ma se lo faccio in modalità paesaggio (la finestra di dialogo non si adatta allo schermo) sembra far esplodere quando si tenta di gonfiare il layout.

Esiste un modo speciale per farlo in modalità paesaggio in cui la vista non si adatta interamente allo schermo?

Eventuali differenze che devo prendere in considerazione oltre allo schermo immobiliare?

È stato utile?

Soluzione

Craiga,

Dopo aver letto i tuoi commenti, sembra che ci sia un malinteso sul modo in cui diverse larghezze e altezze sono generate in XML. Questo è inizialmente un malinteso comune. Quindi, la cosa da capire qui è che la larghezza dei vari oggetti, sebbene dinamici, impongono comportamenti diversi sui tuoi oggetti.

layout_width/layout_height in generale

I parametri di larghezza e altezza non influiscono sul effettivo larghezza e altezza dell'oggetto. Colpiscono la larghezza e l'altezza del display. Ciò significa che è possibile impostare la larghezza e l'altezza su più piccoli del contenuto e il contenuto sarà comunque accessibile durante lo scorrimento, se sono più grandi del contenitore.

Dal momento che molte opinioni per bambini prendono spunti dalle opinioni dei genitori, ciò può comportare comportamenti come stai vedendo sopra. Il trucco qui è prima a capire cosa sta succedendo, quindi compensare il comportamento del sistema.

Match_Parent/Fill_Parent

Di solito, ciò significa che la vista corrente otterrà le sue dimensioni dal genitore. Se la vista è una vista di alto livello, il comportamento cambia leggermente. Se questa è la vista di livello superiore di una finestra di dialogo, sarà la dimensione dello schermo o la dimensione del contenuto (a seconda di quale sia più piccolo). Se la vista è la vista di alto livello di un'attività, i risultati sono gli stessi, ma loro Guarda diverso. Cioè, avrà l'intera attività di opacità e sfondo, ma la dimensione della vista è solo quella del contenuto o delle dimensioni dello schermo (a seconda di quale sia più piccola). Le dimensioni dei bambini non sono influenzate a meno che la loro larghezza/altezza non si basi su quella di questa visione.

wrap_content

In questo caso, l'altezza del display si basa sulle altezze del display di tutti i bambini immediati. Questo comportamento si interrompe fino ai discendenti "più giovani" fino a quando la gerarchia usa qualcosa di diverso da wrap_content.

Il tuo problema (come appare proprio ora)

La tua vista di alto livello utilizza wrap_content, quindi la dimensione del display si baserà su tutte le dimensioni del display dei bambini. In questo caso, potrebbe essere meglio usare match_parent' orFill_Parent` (dipende dalla tua API) solo per la tua vista di alto livello. Questo otterrà almeno la finestra di dialogo per essere la dimensione appropriata, se non il contenuto. Per quei controlli le cui dimensioni si basano sulla vista di livello superiore, verranno in linea. Quelli che non saranno dovranno essere regolati manualmente.

Ora, la decisione che devi prendere qui è l'implementazione. Devi regolare le dimensioni per ogni display o solo il paesaggio. Se le modifiche non hanno alcun effetto sul display del ritratto, un file dovrebbe essere buono. In caso contrario, vorrai un file di layout per il ritratto (quello attuale) e quindi uno regolato per la modalità orizzontale.

Se stai usando due file, avrai una cartella denominata layout_port per quello attuale da conservare. Aggiungerai una cartella denominata layout_land per quello regolato. Saranno dello stesso nome, appena alloggiati nelle cartelle separate.

Spero che sia di aiuto,

Fuzzicallogic

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top