2012-05-20 43 views
1

我周圍添加一個完整視邊界,但我需要如圖像下方只是角落裏添加:如何角落添加到視圖

enter image description here

我的意思是隻有紅色角落。

我試圖調整低於邊境XML,但它沒有工作:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <stroke android:width="10dp" android:height="10dp" android:color="#B22222" /> 
    <solid android:color="#FCE6C9" /> 
    <corners android:radius="20dp" /> 
</shape> 

任何幫助將不勝感激

回答

2

我不認爲這是可能這個使用ShapeDrawable做,因爲它會要求你在drawable本身上使用某種邊距或填充。實際上有一個padding屬性,但不幸的是,它隻影響View的內容,而不是可繪製本身。

這就是說,一個簡單的解決方案是創建一個9補丁替代,並將其作爲背景應用於TextView。只是爲了演示的目的:使9補丁看起來有點像這樣:

Red rounded corner 9-patch example


編輯: 關於第二個想法,實際上是依賴於使用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文件中,以便通過參考ShapeDrawableLayerDrawable這兩個文件來保持這些值的集中性和一致性。

附錄:在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。

+0

謝謝您的回答,但在我申請你的代碼只是給我的粉紅色背景無邊框,還我指(@繪製/圓),因爲我明白你塑造的代碼,我已經將它張貼在我的問題 –

+0

有趣。我最初測試了我的Galaxy Nexus上的drawable,並且工作完美無瑕。您的評論後,我也嘗試了薑餅設備,並注意到你描述的相同問題。將顏色直接引用爲drawable似乎存在問題。有關簡單的解決方法,請參閱我的答案附錄。用這種方法,我的舊設備上的drawable也正確顯示。希望有所幫助。 –

+0

檢查更新圖像上面,抱歉先前的圖像編輯錯了照片編輯器,我也applayed你的更新代碼,但我不能得到它。 –

0

我會創建一個9補丁文件並將其設置爲主容器的背景。要做到這一點的步驟是。

  1. 您可以在煙火,插畫師或任何您喜歡的圖像編輯軟件中大致創建背景。
  2. 然後裁剪圖稿,使藝術品周圍只有1個像素邊框。保存爲PNG。
  3. 在您的計算機C:\ Program Files(x86)\ Android \ android-sdk \ tools的android sdk文件夾中打開draw9patch.bat文件。
  4. 打開您的PNG文件。然後,您可以使用鼠標點擊外部1像素邊界,將點擊的像素變成黑色。在頂部和底部或左側和右側都有黑色像素的區域將是拉伸的區域。在你的情況下,你只需要有一個沒有紅色延伸的中間區域。
  5. 我個人偏好是打開上面的文件並將其保存爲9個補丁文件。然後在我的照片編輯軟件中打開它,以與上述相同的方式創建1像素粗線。它更快,更精確。
  6. 最後將文件添加到您的可繪製文件夾中。然後將主視圖容器的背景設置爲drawable。

應該是這樣。希望有所幫助。