Warum 9-Patch-Grafikgröße korrekt im Emulator, aber nicht auf einem Telefon?

8

Ich habe ein RelativeLayout mit einem 9-Patch-Hintergrundbild. Das Bild ist eine einfache Sprechblase mit einem perfekt zentrierten "Pfeil" in der unteren Mitte.

Das RelativeLayout ist aufgebläht und auf einem MapView platziert. Mit dem Emulator kann die Sprechblase leicht auf einen Ort gerichtet werden und sich auf ihren Inhalt (Text, ein Bild oder beides) erweitern. Wenn ich meine App auf einem Telefon starte, dehnt sich der 9-Patch jedoch nicht richtig aus. Der "Pfeil" für die Sprechblase wird um einen sehr deutlichen Betrag nach links versetzt.

Ich teste hauptsächlich an einem Nexus S, aber auch an einem Samsung Captivate und Nexus One. Targeting SDK 7. Getestete Emulatoren für SDK 7+. Nur Hardwaregeräte scheinen dieses Problem zu haben.

%Vor%     
originalbryan 23.02.2011, 20:14
quelle

1 Antwort

18

Stellen Sie sicher, dass Sie eine mdpi- und eine hdpi-Version haben, wenn Sie unterschiedliche Dichten testen. Wenn Sie Ihr 9patch in res / drawbar / zum Beispiel setzen, wird es als mdpi-Asset behandelt und automatisch auf hdpi-Geräten (Nexus S) hochskaliert. Da es sich um einen automatischen Prozess handelt, sind die Ergebnisse nicht garantiert.

    
Romain Guy 23.02.2011, 21:01
quelle