自定义圆角背景的textview,抛弃shape
自定义一个圆角背景的TextView,解放双手,不用再写shape了。
1.values目录新建attrs.xml。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="test">
<attr name="radius" format="integer" />
<attr name="stokeWidth" format="float" />
<attr name="stokeColor" format="reference|color"/>
<attr name="solidColor" format="reference|color"/>
</declare-styleable>
</resources>
2.新建类继承TextView。
public class CustomRoundTextView extends AppCompatTextView {
private int solidColor;
private int stokeColor;
private float stokeWidth;
private int cornerRadius;
private Paint mPaint;
public CustomRoundTextView(Context context) {
super(context);
init();
}
public CustomRoundTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.test);
cornerRadius = typedArray.getInteger(R.styleable.test_radius, 20);
stokeWidth = typedArray.getFloat(R.styleable.test_stokeWidth, 0.5f);
solidColor = typedArray.getColor(R.styleable.test_solidColor, getResources().getColor(android.R.color.white,null));
stokeColor = typedArray.getColor(R.styleable.test_stokeColor,solidColor );
init();
}
public CustomRoundTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
GradientDrawable gd = new GradientDrawable();
gd.setCornerRadius(dip2px(cornerRadius));
gd.setStroke(dip2px(stokeWidth), stokeColor);
gd.setColor(solidColor);
setBackgroundDrawable(gd);
}
public int dip2px(float dpValue) {
final float scale = getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
}
3.xml文件中使用。
<com.example.myapplication.CustomRoundTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textSize="16sp"
android:text="这是一个test"
android:textColor="#000000"
app:radius="5"
app:stokeWidth="0.5"
app:stokeColor="#000000"
app:solidColor="#ff00000"
/>
4.圆形自定义也可以拓展实现。
效果实现如下:

自定义view相关博客:
2.自定义控件
自定义圆角背景的textview,抛弃shape的更多相关文章
- 【Android UI】案例02 圆角边框、圆角背景的实现(shape)
本文主要分享圆角边框与圆角背景的实现方式.该方式的实现,须要了解shape的使用.该部分的具体介绍,请阅读博客http://blog.csdn.net/mahoking/article/details ...
- Android Imageview 图片居左居右,自定义圆角
android:scaleType="fitStart" 图片靠左不变形显示, android:scaleType=”fitEnd” 图片靠右显示,不变形. 半透明andr ...
- 自定义圆角透明的Dialog
自定义圆角透明的Dialog 说明 系统默认的Dialog默认是背景不透明的,有时候项目需要Dialog为圆角透明,这个时候的解决方案就是---重写Dialog - 系统样式 - 自定义以后的样式 自 ...
- NEC学习 ---- 模块 -文本圆角背景导航
下图是效果图: 然后, 左右两边的圆角图片和背景图片如下 (因为截图工具的原因, 可能图片不是很清晰. 这个图片有4个部分, 分别是中间的背景图, 左右圆角以及栏目分隔白线) 思路: 利用inline ...
- HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
HTML5 Canvas自定义圆角矩形与虚线(RoundedRectangle and Dash Line) 实现向HTML Canvas 2d context绘制对象中添加自定义的函数功能演示,如何 ...
- MFC圆角背景移动边角底色毛刺解决方案
CRect rc; Graphics graphics(pDC->m_hDC); GetClientRect(&rc); CRgn m_rgn; if (m_pBgImage) { gr ...
- 基于HTML5自定义文字背景生成QQ签名档
分享一款利用HTML5实现的自定义文字背景应用,首先我们可以输入需要显示的文字,并且为该文字选择一张背景图片,背景图片就像蒙版一样覆盖在文字上.点击生成QQ签名档即可将文字背景融为一体生成另外一张图片 ...
- (转)Android 自定义 spinner (背景、字体颜色)
Android 自定义 spinner (背景.字体颜色) (2012-07-04 17:04:44) 1.准备两张图片,并做好9.png 2.在drawable中定义spinner_sele ...
- Android自定义圆角矩形进度条2
效果图: 或 方法讲解: (1)invalidate()方法 invalidate()是用来刷新View的,必须是在UI线程中进行工作.比如在修改某个view的显示时, 调用invalidate()才 ...
随机推荐
- pytest文档45-allure添加环境配置(environment)
前言 在 allure 报告首页 ENVIRONMENT 显示 'There are no environment variables' 没有环境变量的配置信息. 环境变量配置可以添加报告相关的配置参 ...
- 新手学习C/C++编程过程中常见的那些坑,一定要多多注意!
C/C++中的指针让程序员有了更多的灵活性,但它同时也是一把双刃剑,如果用的不好,则会让你的程序出现各种各样的问题,有人说,C/C++程序员有一半的工作量是花在处理由指针引起的bug上,可想而知,指针 ...
- CVE-2009-0927-Adobe Reader缓冲区溢出漏洞分析
0x00概述: 此漏洞的成因是由于Adobe Reader在处理PDF文档中所包含的JavaScript脚本时的Collab对象的getlcon()方式不正确处理输入的参数,而产生的缓冲区溢出,成功利 ...
- 主流开源分布式图数据库 Benchmark
本文由美团 NLP 团队高辰.赵登昌撰写 首发于 Nebula Graph 官方论坛:https://discuss.nebula-graph.com.cn/t/topic/1377 1. 前言 近年 ...
- unittest学习
unittest的四大特点 TestCase:测试用例.所有的用例都是直接继承与UnitTest.TestCase类. TestFixture:测试固件.setUp和tearDown分别作为前置条件和 ...
- java之集合容器(Collection,Map)
首先我们要了解什么是集合? 正所谓容器,比如说杯子是装水的容器,衣柜是装衣服的容器,那么集合就是装数据的容器. 集合有什么特点呢? 1.集合长度是可变的 2.集合用来存储对象 集合和数组有什么区别呢? ...
- Python ( 学习 基础篇第一部 )
目录 注释 注释的分类 注释的注意点 变量 变量的概念 变量的声明 变量的命名 变量的交换 变量的缓存机制 常量 进制 进制的转换 原码 反码 补码 六大数据类型 Number 的四大类 字符串 st ...
- 自定义Jackson2HttpMessageConverter,适应.html后缀url
Jackson2HttpMessageConverter 用处 SpringMVC中,controller中的方法返回java Bean对象,mvc将此对象转换成字符串 默认支持的mediaType: ...
- MAP;MLE
判别学习算法:直接对问题进行求解,比如二分类问题,都是在空间中寻找一条直线从而把类别的样例分开,对于新的样例只要判断在直线的那一侧就可. ==>这种直接求解的方法称为判别学习方法 生成学习算法: ...
- 10 张图打开 CPU 缓存一致性的大门
前言 直接上,不多 BB 了. 正文 CPU Cache 的数据写入 随着时间的推移,CPU 和内存的访问性能相差越来越大,于是就在 CPU 内部嵌入了 CPU Cache(高速缓存),CPU Cac ...