2012-07-25 13 views
7

Ich habe einige Probleme mit dem Padding auf dem Nexus 7 Tablet mit Android 4.1 bemerken. Insbesondere habe ich einen Hintergrund ziehbar mit Polsterung, die einen äußeren Hub schafft:Padding Problem auf Nexus 7 Tablet

<?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> 

Das mit einem 1 dp weißen inneren Hub ergänzt wird. So sollte es ein Quadrat 2 dp Rahmen um das gesamte Bild sein:

ich es auf dem tatsächlichen Nexus-Gerät getestet und auf mehreren anderen Geräten und dem 7-Zoll-jelly bean-Emulator:

Als erstes ist hier die Arbeits Version aus dem 4.1 7-Zoll-Emulator: This is the 7 inch tablet emulator for 4.1

Die Grenze um die Außenseite ist gleichmäßig und geht um das gesamte Bild. So funktioniert es auch bei allen anderen Geräten, die ich habe.

Nexus 7:

Image with messed up padding

Die grau ist die Hintergrundfarbe, aber Sie können die rechte und untere Polsterung sehen respektiert wird nicht eingehalten. Die Grenze wird jetzt vom Bild verdeckt.

Wenn es darauf ankommt, sind dies Kinder eines GridView. Frage mich, ob jemand diese Probleme gesehen hat oder Ideen hat, wie sie gelöst werden können.

+0

Ich kann nicht helfen, aber denke, dass dies wegen der Skalierung ist, obwohl ich mit einem XML-Zeichen nicht denke, dass es wichtig sein sollte ... Es ist eine Strecke, aber in welchem ​​Ordner ist das einziehbar? Das Nexus 7 ist 'tvdpi' und nicht' mdpi', also bin ich geneigt zu denken, dass das irgendwie zusammenhängt. – kcoppock

+0

nun, ich hatte keine ahnung, dass tvdpi überhaupt existiert. Ich halte es derzeit in Drawable-Nodpi, da ich dachte, dass es in XML definiert wurde, ohne Skalierung zu erfordern. Ich bin nur darüber verblüfft, warum es im Emulator funktioniert und nicht auf dem Gerät. –

+0

Yeah, sogar Google empfiehlt, sich keine Gedanken über tvdpi für das Nexus 7 zu machen, aber das sieht definitiv nach Skalierung aus. Versuchen Sie, Ihren Emulator auf 213 dpi (tvdpi-Dichte) einzustellen und sehen Sie, ob sich das Problem selbst darstellt. – kcoppock

Antwort

2

Dies scheint ein Fehler beim Generieren der stroke in der XML-Zeichnungsdatei zu sein. Nach mehreren Versuchen habe ich mich darauf beschränkt; Es scheint, die Strichgröße auf der unteren und rechten Seite der Form falsch zu machen, selbst wenn in Pixel angegeben. Wenn ich einfach die Strichbreite zu 2dip ändern statt 1dip (alle anderen Dinge bleiben, wie sie sind), ist dies das Ergebnis:

enter image description here

Dies ist border.xml ich für den Hintergrund des Nachbild verwendet:

<?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> 

, die wiederum ist nur bei Ihnen mit der Strichbreite vergrößert. Die gute Sache ist, Dies wird das erwartete Ergebnis überhaupt nicht ändern, da die Polsterung gleich bleibt. In der Tat können Sie das stroke Tag zu solid ändern und haben immer noch das gleiche Ergebnis (wenn Ihre Bilder Transparenz enthalten, würden Sie jedoch den durchgehenden Hintergrund in den transparenten Bereichen sehen).

Probieren Sie es aus; lassen Sie mich wissen, wie es für Sie funktioniert!

+0

Das hat für mich funktioniert, warum es funktioniert ist verwirrend :) Aber es funktioniert, danke! –

+0

Gern geschehen. :) Ich bin froh, dass es funktioniert hat, aber ich wünschte auch, ich wüsste genau warum. – kcoppock