2012-07-22 11 views
31

Sto facendo un calendario e ho bisogno di una griglia. Il problema sono i confini, o piuttosto lo spazio tra ogni griglia, che è quello che sto usando per simulare una griglia, è 1 dp. Ma è piuttosto spesso. Sto guardando altre app di calendario con i bordi e sono molto sottili. Anche se dovessi usare una forma drawable e renderla 1dp, ha ancora lo spessore. Ho provato a usare .5, ma non sembra funzionare. Non è possibile?Android può supportare dp meno di 1 dp?

risposta

51

Android non permette di immettere valori frazionari per dp in XML, anche se non sono sicuro che lo consiglio perché i risultati diventano meno facile prevedere/calcolo dispositivi convertono dp valori in pixel utilizzando (sostanzialmente) la seguente formula:.

px = (int)(scale * dp + 0.5) 

(cioè la scala densità dispositivo arrotondato al valore del pixel intero più vicino)

Il valore scale sarebbe basato sulla densità schermo del dispositivo:

  • MDPI = 1
  • HDPI = 1,5
  • XHDPI = 2
  • XXHDPI = 3

Così 0.5dp risulterebbe in {1px, 1px, 1px, 2px} per le densità sopra, mentre 1dp sarebbe {1px, 2px, 2px, 3px}. Un valore minuscolo come 0.1dp si risolve in {1px, 1px, 1px, 1px} perché qualsiasi valore inferiore a 1 nella formula precedente si risolve in un singolo pixel a meno che il valore non sia esplicitamente 0dp (non è possibile disegnare qualcosa di più sottile di una larghezza di un singolo pixel).

Se si desidera garantire che venga utilizzata la larghezza più sottile possibile, è consigliabile definire la larghezza in modo esplicito con px invece di un'unità in scala come dp. L'impostazione di un valore di 1px disegna con un singolo pixel su tutti i dispositivi ed è molto più leggibile che sperare che lo 0.5dp o lo 0.1dp faccia lo stesso.

+0

Il px è una grande idea: consente a ciascun dispositivo di renderlo il più fine possibile. Grazie! –

7

Sì.

ho impostato 0.1dp ed è più piccolo di 1DP sul mio ME860 Driod 4" .

+0

Sembra dipendere dal dispositivo. Vedo un bordo a 0.5dp e viene visualizzato sul mio Nexus 4 ma non su un Kindle di prima generazione. – Sam

Problemi correlati