为什么9-patch图像在模拟器上尺寸正确,但在手机上不正确?

8
我有一个RelativeLayout,它有一个9-patch背景图像。该图像是一个简单的带有完美居中的“箭头”的气泡。
RelativeLayout被膨胀并放置在MapView上。使用模拟器,气泡可以轻松指向位置,并将其展开到其内容(文本、图像或两者)。
然而,当我在手机上运行我的应用程序时,9-patch无法正确地拉伸。气泡的“箭头”会向左偏移一个非常明显的量。
我主要在Nexus S上进行测试,但也在Samsung Captivate和Nexus One上进行测试。目标SDK 7。已测试SDK 7+的模拟器。只有硬件设备似乎有这个问题。
<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>
1个回答

18

如果你在不同的像素密度设备上进行测试,请确保你拥有mdpi和hdpi版本。例如,将你的9patch放在res/drawable/中,它将被视为mdpi资产并在高分辨率设备(如Nexus S)上自动缩放。由于这是一个自动过程,结果不能保证。


谢谢!我现在已经拥有了所有需要的图形,并且它正常工作。我之前也通过使用一个宽度奇怪的png并在我的图形上调整间距来“修复”这个问题,使其均匀缩放。虽然不是一个可行的方法,但我认为值得一提。 - originalbryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接