2015-12-16 37 views
1

我想使具有白色邊框和位圖按鈕在左側:如何覆蓋位圖和形狀層列表正確

enter image description here

我有XML背景:

<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape> 
      <corners android:radius="10.0dip"/> 
      <stroke 
       android:width="2px" 
       android:color="@android:color/white"/> 
     </shape> 
    </item> 
    <item> 
     <bitmap 
      android:gravity="left" 
      android:src="@drawable/vk_login"> 
     </bitmap> 
    </item> 
</layer-list> 

而且結果是:

enter image description here

我不知道如何從位圖製作邊框和切角。什麼是最好的方式來使背景像第一個圖像?

+0

http://stackoverflow.com/questions/18527467/mask-imageview-with-round-corner-background –

回答

4

我已創建形狀文件按您的要求:

1)以下是您的可繪製命名爲:btn_vk_drawable.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="#FABC38"></solid> 
      <padding 
       android:bottom="10dp" 
       android:left="10dp" 
       android:right="10dp" 
       android:top="10dp" /> 
     </shape> 
    </item> 
    <item> 
     <bitmap 
      android:gravity="left|center_horizontal" 
      android:src="@drawable/vk_login"></bitmap> 
    </item> 
    <item> 
     <shape> 
      <corners android:radius="10dip" /> 
      <stroke 
       android:width="2px" 
       android:color="@android:color/white" /> 
     </shape> 
    </item> 

</layer-list> 

2)在你的佈局佈局文件,你可以這樣定義按鈕:

<Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="100dp" 
     android:background="@drawable/btn_vk_drawable" 
     android:text="VK" 
     android:ems="12" 
     android:textAlignment="center" /> 

enter image description here

使用9補丁:btn_vk_drawable.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="#FABC38"></solid> 
      <padding 
       android:bottom="10dp" 
       android:left="10dp" 
       android:right="10dp" 
       android:top="10dp" /> 
     </shape> 
    </item> 
    <item> 
     <!--<bitmap--> 
     <!--android:gravity="left|center_horizontal"--> 
     <!--android:src="@drawable/t"></bitmap>--> 
     <nine-patch 
      android:dither="true" 
      android:src="@drawable/common_signin_btn_text_normal_dark.9" /> 
    </item> 

</layer-list> 

enter image description here

+0

Okey,我怎麼理解我不能裁剪位圖邊角,所以位圖應該與形狀相同的邊角半徑。可以簡單地使用一個沒有層列表的9路徑繪製? – zella

+0

是的,你可以使用9補丁圖像。請看我編輯的答案 – Hits

0

你只需要在代碼中添加填充物:

我已經更新了你的代碼: -

<item> 
    <shape> 
     <padding 
      android:bottom="5dp" 
      android:left="5dp" 
      android:right="5dp" 
      android:top="5dp" /> 

     <corners android:radius="10.0dip" /> 

     <stroke 
      android:width="2px" 
      android:color="@android:color/black" /> 
    </shape> 
</item> 
<item> 
    <bitmap 
     android:gravity="left" 
     android:src="@drawable/bg_casedetail_audio" > 
    </bitmap> 
</item>