为什么9-patch图形尺寸在模拟器中正确但在手机上没有?

时间:2011-02-23 20:14:35

标签: android android-layout android-mapview layoutparams

我有一个具有9补丁背景图像的RelativeLayout。图像是一个简单的语音气泡,底部中间有一个完美居中的“箭头”。 Speech bubble

RelativeLayout被夸大并放置在MapView上。使用模拟器,可以轻松地将语音气泡指向某个位置,并将其扩展到其内容(文本,图像或两者)。但是,当我在手机上运行我的应用程序时,9补丁无法正常伸展。语音气泡的“箭头”将向左偏移一个非常明显的数量。

我主要测试的是Nexus S,还有三星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 个答案:

答案 0 :(得分:18)

如果您测试不同的密度,请确保您有mdpi和hdpi版本。例如,如果您将9patch放在res / drawable /中,它将被视为mdpi资产并在hdpi设备(Nexus S)上自动放大。因为这是一个自动过程,所以不能保证结果。