开发者

Why do 9-patch graphics size correctly in the emulator but not on a phone?

开发者 https://www.devze.com 2023-02-13 05:00 出处:网络
I have a RelativeLayout that has a 9-patch background image. The image is a simple speech bubble with a perfectly centered \"arrow\" at the bottom middle.

I have a RelativeLayout that has a 9-patch background image. The image is a simple speech bubble with a perfectly centered "arrow" at the bottom middle.

Why do 9-patch graphics size correctly in the emulator but not on a phone?

The RelativeLayout is inflated and placed on a MapView. Using the emulator, the speech bubble can be easily pointed to a location and will expand to its contents (text, an image, or both). When I run my app on a phone however, the 9-patch doesn't stretch properly. The "arrow" for the speech bubble will be offset to the left by a very noticeable amount.

I primarily test on a Nexus S, but also a Samsung Captivate and Nexus One. Targeting SDK 7. Tested emulators for SDK 7+. Only hardware devices seem to have this problem.

<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开发者_JS百科:layout_height="wrap_content" 
              android:layout_width="wrap_content"
              android:maxWidth="196dp"
              android:id="@+id/summary"></TextView>
</RelativeLayout>


Make sure you have an mdpi and an hdpi version if you test on different densities. If you put your 9patch in res/drawable/ for instance, it will be treated as an mdpi asset and scaled up automatically on hdpi devices (Nexus S). Because it's an automatic process, the results are not guaranteed.

0

精彩评论

暂无评论...
验证码 换一张
取 消