2012-05-07 53 views
1

這是我第一次在我的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

+0

你確定圖片名是'yourimgname.9.png? ' –

+1

shadow_border ..是什麼名字? 'shadow_bordder.9.png' ..檢查每個可繪製文件夾中的wheather是否保留相同的文件,並且全部都是正確的..如果只有一個..那麼它的好.. – MKJParekh

+0

圖像的名稱是「shadow_border.9.png」。當它在Eclipse佈局編輯器 –

回答

4

我解決它在我自己,但我不明白爲什麼它的工作原理。

在九補丁,我繪製在頂部2線和圖像的(見第2條黑線在圖象) enter image description here

12

取下底部和右側的兩個點,因爲這些側面在如何決定左應該顯示很多空間。

,這裏是九個補丁的Android

nine patch

是如何工作的,並按照this tutorial當你創建九個補丁圖像。

+0

但爲什麼它在九個補丁工具和Eclipse的佈局編輯器的預覽屏幕上工作? –

+0

@NguyenMinhBinh其實我不知道他們爲什麼給我們提供了一個小工具我面臨同樣的問題你做了什麼,我有答案,我給它你希望它爲你工作 – Akram

+0

它在工具中的作用,而不是該應用程序是因爲該工具最有可能比android更懶惰地計算它。即:9補丁工具查找最左邊和最右邊的像素,而不會看到兩者之間的任何內容。 – Brad

1

我對它進行了更深入的測試,似乎在draw9patch工具,Eclipse中的圖形編輯器和設備之間存在不一致性。前兩種似乎可以工作的九個補丁不能在設備上工作 - 他們無聲地回退到BitmapDrawable,而不報告錯誤。在我的2.3.5設備以及4.1仿真器上重現。看到這個android bug:http://code.google.com/p/android/issues/detail?id=38941

解決方法是繪製單行像素,而不僅僅是點。

提示:您的圖片應儘可能小。如果您在左側或頂部區域放置兩個點,則表示您有兩個延伸區域,並且它們之間的區域保持未拉伸狀態。您可以從第一個點(不包括)到第二個點(包括)切出區域,並且只有一個點,圖像較小,結果相同。

+0

我爲此創建了一個錯誤報告:http://code.google.com/p/android/issues/detail?id=38941。我用你的圖片:) – Oliv

0

我正在使用的圖像有一個陰影,並且出色地我假設它在到達圖像的最後一個像素之前就結束了......所以沒有費力地通過像素來放大圖像...(我知道9補丁工具正在爲我做這個,但我正在編輯圖像的中間,所以我只是將它添加到那裏)

所以問題是預覽可以使用alpha處理像素,9修補工具可以處理它,但設備不能!

相關問題