2013-07-25 12 views
6

Ho riscontrato un problema con margini apparentemente inspiegabili che appaiono sui lati sinistro e destro dei miei layout quando si utilizza un dispositivo Nexus 10 in modalità orizzontale. Sono sicuro che sia qualcosa di imbarazzante, ma non riesco a trovare alcuna menzione di questo quando cerco in giro.Android: margini sinistro/destro indesiderati su Nexus 10 in modalità orizzontale

Sono sicuro che non è correlato al mio codice, perché il progetto Hello World predefinito creato da Eclipse mostra il fenomeno. I seguenti estratti screenshot sono presi da un nuovo progetto e l'unico cambiamento che ho fatto è quello di rendere il TextView textSize un po 'più grande per chiarezza:

Comparison of landscape and portrait orientations on the Nexus 10

Si può vedere che i margini predefiniti dal XML di layout il file (mostrato sotto) viene applicato correttamente in modalità verticale, ma c'è un margine aggiuntivo considerevole applicato in modalità orizzontale - indicato dalla barra rossa sotto lo screenshot.

<!-- Default screen margins, per the Android Design guidelines. --> 
<dimen name="activity_horizontal_margin">16dp</dimen> 
<dimen name="activity_vertical_margin">16dp</dimen> 

Qualcun altro ha visto questo o ha qualche idea di come posso liberarmi di loro? Non so davvero da dove cominciare, perché sembra essere specifico questo dispositivo e l'orientamento dello schermo. Inoltre, influisce sul programma più semplice possibile, oltre che sul mio, quindi non ha senso estrapolare il mio codice finché non trovo come risolvere il caso predefinito.
Le stesse schermate vengono visualizzate correttamente sui dispositivi emulati e sul mio Samsung Galaxy S2 (che esegue Gingerbread). Cambiare il Target di costruzione del progetto dal livello API 17 a 10 non ha alterato l'effetto indesiderato. qualche idea?

risposta

9

Ok, quindi è stato imbarazzante semplice! Il margine per il Nexus 10 in modalità orizzontale è tratto dalla cartella delle risorse 'valori-sw720dp-terre', che dichiara un valore molto più grande:

<!-- 
    Customize dimensions originally defined in res/values/dimens.xml (such as 
    screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here. 
--> 
<dimen name="activity_horizontal_margin">128dp</dimen> 

Dopo quasi un anno di agguato su SO e trovare risposte a tutte le le mie domande, la prima che finalmente decido di fare correttamente risulta essere banale come questa ...

+1

Grazie mille. Ho avuto a che fare con questo problema per ore. Ho cambiato ogni larghezza e margine in tutti i miei layout e viste nei miei XML e non ha funzionato! – Tina

+0

Qualcuno ha trovato un blog o un documento che spiega perché questo imponente valore di 128dp viene utilizzato in orizzontale? Ho notato che è tutto finito su alcuni build Android (anche nelle impostazioni). –

0

Grazie, danj1974! Hai risparmiato molto tempo per me! Ho cambiato un ambiente in res/valori-w820dp/dimens.xml a

<dimen name="activity_horizontal_margin">0dp</dimen> 

e funziona bene.

+0

Non è più semplice rimuovere questo valore dal file 'values-w820dp/dimens.xml'? – aga

+0

@aga, beh, una buona idea. Vedo che c'è un file valori/dimens.xml. C'è anche un attributo "activity_horizontal_margin" con valore "0dp". – CoolMind