自定义圆角背景的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()才 ...
随机推荐
- day30 Pyhton 面向对象 继承.装饰器
一面向对象相关 谈谈你对面向对象的理解 1.泛泛谈:什么情况下使用面向对象 2.针对面向对象的 封装 继承 多态一个一个的谈 3.根据你工作中的实际情况对应来举例子 封装 1.广义上:普遍的大家认为的 ...
- ES异常处理-NoNodeAvailableException
1.问题描述 ES client客户端能创建,但是在用客户端操作时报:NoNodeAvailableException[None of the configured nodes are availab ...
- kali 安裝虛擬機VMware
0x00前言 由於之前已經安裝過虛擬機,這次爲了寫博客又重新安裝了一邊,有些地方直接按照之前的默認的設置來了,省了設置,中間又換了一個實驗環境.完成了文章中的演示,整個過程多次實驗是沒問題的,若有疑問 ...
- Spring官方都推荐使用的@Transactional事务,为啥我不建议使用!
GitHub 17k Star 的Java工程师成神之路,不来了解一下吗! GitHub 17k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 17k Star 的Java工 ...
- JS实现页面计时
前言 计时功能在网页上是非常多的,现在我就用原生JS做个计时功能吧 HTML <div><label>得到毫</label> <h5></h5&g ...
- pip安装与使用
介绍 pip是python包管理工具,提供了对python包的查找,下载,安装,卸载功能. 安装 检查是否安装 pip --version 安装 curl https://bootstrap.pypa ...
- ScheduledExecutor定时器
为了弥补Timer 的上述缺陷,在Java 5的时候推出了基于线程池设计的 ScheduledExecutor.其设计思想是:每一个被调度的任务都会由线程池中一个线程去执行,因此任务是并发执行的,相互 ...
- ArrayBlockingQuque摘要
ArrayBlockingQuque 优势 线程同步,线程安全 对应空或满时,take\put操作将阻塞 内部是一个数组,每个元素不会产生额外的处理对象,如Node 基于什么 ReentrantLoc ...
- 关于GIT配置公私钥
问题:pull代码时显示 原因:公钥与私钥对不上,或者没有配置导致 解决: 1.生成私钥:TortoiseGIT → PuttyGen → Generate(点击后鼠标晃动会加速)→Save Priv ...
- 专题四:redis的数据类型之list
一.基本介绍 对于list,它的存储需求是什么呢?对于string,讲究单个,hash也不讲究大量:当我们需要存储多个数据的时候,前面的数据类型就不大合适了. 数据存储需求:存储多个数据,并对数据进入 ...