2011-02-23 11 views
8

Tengo una RelativeLayout que tiene una imagen de fondo de 9 parches. La imagen es una burbuja de diálogo simple con una "flecha" perfectamente centrada en la parte inferior central. Speech bubble¿Por qué los gráficos de 9 parches tienen el tamaño correcto en el emulador pero no en un teléfono?

El RelativeLayout se infla y se coloca en un MapView. Al usar el emulador, el globo de diálogo se puede apuntar fácilmente a una ubicación y se expandirá a su contenido (texto, imagen o ambos). Sin embargo, cuando ejecuto mi aplicación en un teléfono, el parche 9 no se estira correctamente. La "flecha" para el globo de diálogo se desplazará hacia la izquierda en una cantidad muy notable.

Pruebo principalmente en un Nexus S, pero también en un Samsung Captivate y un Nexus One. Targeting SDK 7. Emuladores probados para SDK 7+. Solo los dispositivos de hardware parecen tener este problema.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_height="wrap_content" 
       android:id="@+id/BubbleLayout" 
       android:background="@drawable/bubble" 
       android:layout_width="wrap_content" 
       android:gravity="center_horizontal"> 
    <TextView android:layout_height="wrap_content" 
       android:id="@+id/date" 
       android:layout_width="wrap_content" 
       android:maxWidth="196dp"></TextView> 
    <TextView android:layout_below="@+id/date" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:maxWidth="196dp" 
       android:id="@+id/summary"></TextView> 
</RelativeLayout> 

Respuesta

18

Asegúrese de tener una versión mdpi y una hdpi si prueba en densidades diferentes. Si coloca su 9patch en res/drawable/por ejemplo, se tratará como un recurso mdpi y se ampliará automáticamente en dispositivos hdpi (Nexus S). Debido a que es un proceso automático, los resultados no están garantizados.

+0

Gracias! Ahora tengo todos los gráficos necesarios y está funcionando bien. También me las arreglé para "arreglar" este problema antes usando un png con un ancho impar y jugué con el espaciado en mi gráfico, lo que hizo que escalara uniformemente. No es un método a seguir, pero pensé que valía la pena mencionarlo. – originalbryan

Cuestiones relacionadas