2013-02-07 16 views
5

Sto usando un'immagine a nove patch come un elemento disegnabile per l'elemento di un selettore. L'immagine di nove patch è qui:9 l'immagine della patch viene ridimensionata nelle posizioni errate

9 patch image

L'immagine che finalmente viene reso è questo (emulatore & dispositivo screenshot, sia dispositivo di avere risoluzioni> MDPI):

resulting rendered image

Come si può vedere, è stato ridimensionato al di fuori dell'area estensibile (come definito nel file di patch 9), la barra verde più scura è molto più spessa che dovrebbe essere. Perché è possibile e può essere evitato? Lo strumento draw9patch ridimensiona correttamente questa immagine. Ha a che fare con Android cercando di mantenere le dimensioni fisiche su dispositivi ad alta risoluzione?

+0

Vediamo il codice in cui si disegna l'immagine. – Caerulius

risposta

6

Fornite solo una versione mdpi dell'immagine?

Android scale tutte le immagini che non sono disponibili in densità di pixel corretto. Questo accade prima che l'immagine venga ridimensionata tramite 9patch.

Questo vorrebbe dire che l'immagine viene scalata fino a adattarsi hdpi e poi adattato il contenuto.

Per risolvere questo problema, è necessario fornire hdpi e le versioni xhdpi della vostra immagine. 9patch non dovrebbe avere come target densità di pixel diverse e dimensioni di schermo/contenuto piuttosto diverse.

+0

Esiste una sola versione (inserire la cartella drawable). Quindi sembra che il processo che hai delineato spiega il problema che sto affrontando. Peccato, ho pensato di evitare di creare immagini anche per tutte quelle risoluzioni fisiche diverse ... – user462982

3

ho verificato la tua 9 patch:

enter image description here

Perché hai colorare la vostra limiti non utilizzati bianca? Dovrebbe essere trasparente. A causa di questo non è riconosciuto come un 9Patch:

enter image description here

+0

I bordi bianchi sono la mia migliore pratica personale in quanto evita che i pixel quasi trasparenti vadano sui bordi esterni. Finora, non ho mai avuto problemi con questo. E l'ho verificato due volte: le strisce rosse (qualunque cosa significhi) si verificano anche con bordi completamente trasparenti. – user462982

Problemi correlati