【android开发笔记】为Button的背景图片添加边框式样式效果

现在做的项目遇到一个问题,设计给过来的图片只有一种状态,但是实现的需求是要求有两个状态,另一种选状态为图片背景加边框。如图:

刚开使用使用ImageView ,ImageViewButton 效果不是很明显;

 

后来发现 layer-list 能很好的实现这个效果,先分别建 正常模式与选中模式的xml文件:

正常模式:btn_angle_normal_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="@color/transparent_half" />
    <stroke
        android:width="@dimen/dimen_6px"
        android:color="@color/transparent_half" />
    <padding
        android:bottom="0.0dip"
        android:left="0.0dip"
        android:right="0.0dip"
        android:top="0.0dip" />
</shape>
选中模式:btn_angle_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="@color/transparent_half" />
    <stroke
        android:width="@dimen/dimen_6px"
        android:color="@color/gold" />
    <padding
        android:bottom="0.0dip"
        android:left="0.0dip"
        android:right="0.0dip"
        android:top="0.0dip" />
</shape>

 

Selector :common_recangle_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_angle_bg" android:state_pressed="true" />
    <item android:drawable="@drawable/btn_angle_bg" android:state_selected="true" />
    <item android:drawable="@drawable/btn_angle_normal_bg" android:state_enabled="true" />
</selector>

 

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

<item android:drawable="@drawable/common_recangle_bg" /> //这里是normal与press的xml文件
<item
    android:bottom="@dimen/dimen_4px"
    android:drawable="@mipmap/bai_table_zhuang_up" //这里是背景图片
    android:left="@dimen/dimen_4px"
    android:right="@dimen/dimen_4px"
    android:top="@dimen/dimen_4px" />
</layer-list>

 

然后在布局里的内部控件使用:

 <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/zhuang_btn"
            android:gravity="bottom|center"
            android:text="4545\n"
            android:textSize="@dimen/dimen_tv_20" />

 

基本这样可以实现了这个效果!

 

转载于:https://www.cnblogs.com/tefcricul/p/6420811.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值