2015-12-16 102 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>