我不認爲這是可能這個使用ShapeDrawable
做,因爲它會要求你在drawable本身上使用某種邊距或填充。實際上有一個padding
屬性,但不幸的是,它隻影響View
的內容,而不是可繪製本身。
這就是說,一個簡單的解決方案是創建一個9補丁替代,並將其作爲背景應用於TextView
。只是爲了演示的目的:使9補丁看起來有點像這樣:
編輯: 關於第二個想法,實際上是依賴於使用LayerDrawable
以創建所需的另一種選擇影響。創建起來有點乏味,我懷疑它會比使用9補丁效率更高,但至少你不需要渲染圖像,這意味着如果你需要製作例如顏色的變化,更直接。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/rounded" />
<item android:drawable="@android:color/white" android:left="30dp"
android:right="30dp" />
<item android:bottom="30dp" android:drawable="@android:color/white"
android:top="30dp" />
<item android:bottom="30dp" android:left="10dp" android:right="10dp"
android:drawable="@color/pink" android:top="30dp" />
<item android:bottom="10dp" android:left="30dp" android:right="30dp"
android:drawable="@color/pink" android:top="10dp" />
</layer-list>
一些細節:@drawable/rounded
是您自己發佈的代碼片段。以下兩個項目只是帶有偏移量的白色矩形,用於創建白色邊緣。現在,由於這些也會覆蓋粉色表面,所以我們需要兩個更多的粉紅色矩形(同樣具有特定的偏移量)來抵消這種情況。結果是一個背景,看起來完全像你在問題中顯示的內容。
請注意,您可能想查看是否可以優化這一點。至少我建議不要對偏移進行硬編碼(就像我爲簡單起見所做的那樣),但將它們存儲在dimens.xml
文件中,以便通過參考ShapeDrawable
和LayerDrawable
這兩個文件來保持這些值的集中性和一致性。
附錄:在ICS之前(或者也許是蜂窩之前的)設備上,似乎存在直接參考android:drawable
屬性指定顏色的問題。但是,您可以通過設置另一個可繪製對象(無論是9色塊還是ShapeDrawable
)來輕鬆地表示該顏色。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FCE6C9" />
</shape>
顯然,你將需要在LayerDrawable
引用的所有其他顏色做相同的:例如,在上面的片段中,你將與android:drawable="@drawable/color_pink"
,其中color_pink
可以僅僅是一個包含XML文件替換android:drawable="@color/pink"
。測試薑餅2.3.7。
謝謝您的回答,但在我申請你的代碼只是給我的粉紅色背景無邊框,還我指(@繪製/圓),因爲我明白你塑造的代碼,我已經將它張貼在我的問題 –
有趣。我最初測試了我的Galaxy Nexus上的drawable,並且工作完美無瑕。您的評論後,我也嘗試了薑餅設備,並注意到你描述的相同問題。將顏色直接引用爲drawable似乎存在問題。有關簡單的解決方法,請參閱我的答案附錄。用這種方法,我的舊設備上的drawable也正確顯示。希望有所幫助。 –
檢查更新圖像上面,抱歉先前的圖像編輯錯了照片編輯器,我也applayed你的更新代碼,但我不能得到它。 –