Android布局组件中实现圆角边框的两种方法

  • 设置corners_bg.xml


设置边框圆角可以在drawable-mdpi目录里定义一个xml: 

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">      
  3.     <solid android:color="#FFFFFF" />      
  4.     <corners android:topLeftRadius="10dp"     
  5.              android:topRightRadius="10dp"      
  6.              android:bottomRightRadius="10dp"     
  7.              android:bottomLeftRadius="10dp"/>      
  8. </shape>   
解释:

solid的表示填充颜色,为了简单,这里用的是白色。 

而corners则是表示圆角,注意的是这里bottomRightRadius是左下角而不是右下角,bottomLeftRadius右下角。 


上面的效果也可以像下面一样设置,如下:

[html]  view plain copy
  1. <corners android:radius="5dp" />    


引用corners_bg.xml

如果想引用这个xml,只需要@drawable/corners_bg.xml即可: 

[html]  view plain copy
  1. android:background="@drawable/corners_bg"   

  • Java代码动态加载
    /**
     * 代码动态绘制View的圆角边框
     * @param radius 15dp
     * @param borderLength 1dp
     * @param borderColor
     * @return
     */
    public static ShapeDrawable createRoundCornerShapeDrawable(float radius, float borderLength, int borderColor) {
        float[] outerRadii = new float[8];
        float[] innerRadii = new float[8];
        for (int i = 0; i < 8; i++) {
            outerRadii[i] = radius + borderLength;
            innerRadii[i] = radius;
        }

        ShapeDrawable sd = new ShapeDrawable(new RoundRectShape(outerRadii, new RectF(borderLength, borderLength,
                borderLength, borderLength), innerRadii));
        sd.getPaint().setColor(borderColor);

        return sd;
    }

引用createRoundCornerShapeDrawable

          tagTextView.setBackground(createRoundCornerShapeDrawable(
                    radius, (float)DisplayUtils.pxToDip(mContext,BORDER_WIDTH_VALUE),
                    tag_bg_colors[i % (MAX_NUM_OF_SELECTED_TAG_DEFAULT -1)]
                    ));



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值