2013-10-16 65 views
0

我正在使用9-patch圖像爲可以在不同屏幕尺寸下拉伸的按鈕創建選擇器。所以我基本上通過這樣的選擇器中的文件名稱(沒有.9.png):在android上應用9-patch PNG

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true" android:drawable="@drawable/img_common_white_button_bg_pressed" /> 
    <item android:drawable="@drawable/img_common_white_button_bg_default" /> 

</selector> 

而且我認爲這應該沒問題。的XML的圖形佈局屏幕不與按鈕顯示任何問題,但是當我運行我的設備應用程序,這是我得到:

enter image description here

所以我不知道是否我以錯誤的方式應用圖像還是9補丁文件的問題?我會很感激,如果有人可以啓發我這個。謝謝。

+0

您的文件名應該像這樣img_name.9.png。使用這個來畫p補丁http://android-ui-utils.googlecode.com/hg/asset-studio/dist/nine-patches.html – SathishKumar

+0

我的文件是img_name.9.png,那麼我必須說明它在這樣的xml中'android:drawable =「@ drawable/img_name.9」'? –

+0

不需要像這樣簡單地給出'android:drawable =「@ drawable/img_name」'。在開始時你已經應用了正確的,所以問題不適用,但問題可能出現在你的圖像中。 – SathishKumar

回答

1

請考慮下面提及的9補丁圖像的東西:

- > .9.png圖像具有指示它的補丁圖像周圍的黑色邊框。

- >以具有.9.png被鑑定爲9-補丁圖像所以它必須在9補丁圖像已經.9.png作爲擴展

在你的情況,你從取出0.9繪製文件夾圖像圖像名稱,因此它將在圖像周圍具有黑色邊框的普通可繪製圖像。

你有2個選項。從按鈕中刪除補丁重新創建它的所有Android可繪製的大小。 或者保留9個補丁圖像,並將其擴展爲可拖動文件夾中的.9.png。

+0

是的我的文件是9-patch圖像,它們是用android資產工具生成的,並且具有.9.png命名約定。我的問題是,是否必須將全名(使用後綴)傳遞給xml文件才能使用?因爲目前我正在像上面一樣使用它們,並且它們顯示邊緣 –

+0

無需在選擇器文件中定義後綴,它可以作爲普通圖像實現。 –

+0

是的,這正是我所做的和邊緣顯示。這是否意味着9貼片圖像有什麼問題? –

0

重命名你的形象 img_common_white_button_bg_default.9.png

img_common_white_button_bg_pressed.9.png。

注:一個正常的PNG文件(巴紐)將被裝入一個空像素的邊框添加的圖像,從中可以得出伸縮補丁和內容區域周圍。先前保存的9個補丁文件(9.9.png)將按原樣加載,不添加任何繪圖區域,因爲它已經存在。

閱讀官方文檔:Draw 9-patch

1

請檢查您是否將.9.png複製到所有分辨率文件夾中,例如drawable-hdpi drawable-xhpdi drawable-xxhdpi。

如果運行設備的dpi不是應該與分辨率文件夾應該是相同的,聽起來像Android會延伸甚至邊界區域(靜態區域)。如果只將.9.png複製到可繪製文件夾中,則如果在dpi爲3的設備上運行,邊框將被拉伸爲3倍寬。