2012-07-25 18 views
7

Sono alcuni problemi con il riempimento del tablet Nexus 7 con Android 4.1. In particolare, ho un disegnabile sfondo con imbottitura che crea un colpo esterno:Problema di imbottitura sul tablet Nexus 7

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > 

    <stroke 
    android:width="1dp" 
    android:color="#59000000" /> 

    <padding 
    android:bottom="1dp" 
    android:left="1dp" 
    android:right="1dp" 
    android:top="1dp" /> 

    </shape> 

Questo è completato con un colpo interno bianco 1DP. Quindi dovrebbe essere un dp bordo quadrato 2 attorno all'intera immagine:

Ho testato sul dispositivo Nexus reale e su diversi altri dispositivi e il 7 pollici emulatore fagiolo di gelatina:

Innanzitutto, ecco la lavorazione versione dall'emulatore 4.1 da 7 pollici: This is the 7 inch tablet emulator for 4.1

Il bordo esterno è uniforme e gira intorno all'intera immagine. Questo è come funziona su tutti gli altri dispositivi che ho pure.

Nexus 7:

Image with messed up padding

Il grigio è il colore di sfondo, ma si può vedere sulla destra e padding inferiore non viene rispettato. Il confine è ora oscurato dall'immagine.

Se è importante, questi sono figli di un GridView. Mi chiedo se qualcuno ha visto questi problemi o ha idee su come risolverli.

+0

Non posso fare a meno di pensare che questo sia dovuto al ridimensionamento, anche se con un disegnatore XML non sto pensando che dovrebbe essere importante ... È un tratto, ma in quale cartella è possibile disegnare? Il Nexus 7 è 'tvdpi' e non' mdpi', quindi sono propenso a pensare che questo sia in qualche modo collegato. – kcoppock

+0

beh, non avevo idea che esistesse tvdpi. Attualmente lo sto inserendo in nodpi disegnabili poiché ho pensato che fosse definito in xml senza richiedere il ridimensionamento. Sono solo sconcertato sul perché avrebbe funzionato nell'emulatore e non sul dispositivo. –

+0

Sì, anche Google consiglia di non preoccuparsi di tvdpi per il Nexus 7, ma questo sembra decisamente un problema di ridimensionamento. Prova a impostare l'emulatore a 213 dpi (densità tvdpi) e verifica se il problema si presenta. – kcoppock

risposta

2

Questo sembra essere un bug durante la generazione di stroke nel file XML. Dopo diversi tentativi, l'ho ristretto a quello; sembra che la dimensione del tratto sia errata sui lati inferiore e destro della forma, anche se specificata in pixel. Se ho semplicemente cambiare la larghezza del tratto di 2dip invece di 1dip (tutte le altre cose stare come sono), questo è il risultato:

enter image description here

Questa è la border.xml ho utilizzato per lo sfondo del dopo immagine:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 

    <stroke 
      android:width="2dp" 
      android:color="#59000000"/> 

    <padding 
      android:bottom="1dp" 
      android:left="1dp" 
      android:right="1dp" 
      android:top="1dp"/> 

</shape> 

Che, ancora una volta, è solo tuo con la larghezza del tratto ingrandita. La cosa buona è che, , questo non cambierà il risultato previsto su tutti poiché il padding rimane lo stesso. In effetti, puoi modificare il tag stroke su solid e ottenere lo stesso risultato (tuttavia, se le tue immagini contengono trasparenza, vedrai lo sfondo solido nelle aree trasparenti).

Provatelo; fammi sapere come funziona per te!

+0

Questo ha funzionato per me, perché ha funzionato è sconcertante :) Ma funziona, grazie! –

+0

Prego. :) Sono contento che abbia funzionato, ma vorrei anche sapere esattamente il perché. – kcoppock

Problemi correlati