九个补丁图片在我的设备上无法使用?

时间:2012-05-07 08:34:03

标签: android nine-patch

这是我第一次在我的Android应用程序上使用九补丁图像。它如此愚蠢。当我在eclipse布局编辑器上预览时,它可以工作。但是当我在真实设备(HTC Inspire 4g,HTC Explorer,......)上构建应用程序时,它不是。

<LinearLayout
                        android:layout_width="0dip"
                        android:layout_height="fill_parent"
                        android:layout_margin="5dp"
                        android:layout_weight="1"
                        android:background="@drawable/shadow_border"
                        android:gravity="center"
                        android:padding="0dip" >

                        <TextView
                            android:id="@+id/itemdetail_textview_price"
                            style="@style/textview_nomalBold"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="$10"
                            android:textColor="#F00"
                            android:textSize="32dp" />

                        <TextView
                            android:id="@+id/itemdetail_textview_originalPrice"
                            style="@style/textview_nomalBold"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="15dp"
                            android:text="$20"
                            android:textSize="32dp" />
                    </LinearLayout>

On Nine patch tool

Preview on Eclipse layout Editor

On real device

这里有什么问题吗?

更新:

  • 我正在为Android 2.2及更高版本编写应用程序。

  • 我的手机使用的是Android 2.3

4 个答案:

答案 0 :(得分:12)

从底部和右侧移除两个点,因为这些侧面决定了您的内容应显示多少空间。

以下是九个补丁如何在android中运行

nine patch

创建九个补丁图片时,请关注this tutorial

答案 1 :(得分:4)

我是靠自己解决的,但我不明白为什么会这样。

在9补丁中,我在图像的顶部和左侧绘制了2条线(见图中的2条黑线) enter image description here

答案 2 :(得分:1)

我对它进行了更深入的测试,似乎draw9patch工具,Eclipse中的图形编辑器和设备之间存在不一致。看起来在前两个中工作的九个补丁在设备上不起作用 - 它们默默地回退到BitmapDrawable,而不报告错误。在我的2.3.5设备以及4.1仿真器上重现。看到这个android bug:http://code.google.com/p/android/issues/detail?id=38941

解决方法是绘制单行像素,而不仅仅是点。

提示:您的图片应尽可能小。如果在左侧或顶部区域放置两个点,则表示您有两个拉伸区域,并且它们之间的区域保持未拉伸状态。您可以从第一个点(不包括)到第二个点(包括)剪切区域,并且只有一个点,图像较小且结果相同。

答案 3 :(得分:0)

我使用的图像有一个阴影,并且出色地我假设它在到达图像的最后一个像素之前结束......所以没有用图像放大图像。 ..(我知道9补丁工具正在为我做这个,但我正在编辑图像,所以我只是在那里添加)

所以问题是预览可以处理带alpha的像素,9-patch工具也可以处理它,但设备不能!