TextView、Button的drawableLeft和drawableRight与文本一起居中显示
来源:互联网 发布:超越无限 知乎 编辑:程序博客网 时间:2024/05/29 18:48
public class DrawableCenterButton extends TextView { public DrawableCenterButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public DrawableCenterButton(Context context, AttributeSet attrs) { super(context, attrs); } public DrawableCenterButton(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { Drawable[] drawables = getCompoundDrawables(); if (drawables != null) { Drawable drawableLeft = drawables[0]; if (drawableLeft != null) { float textWidth = getPaint().measureText(getText().toString()); int drawablePadding = getCompoundDrawablePadding(); int drawableWidth = 0; drawableWidth = drawableLeft.getIntrinsicWidth(); float bodyWidth = textWidth + drawableWidth + drawablePadding; canvas.translate((getWidth() - bodyWidth) / 11 * 5, 0); } } super.onDraw(canvas); }}
use
<com.justwayward.reader.view.DrawableCenterButton android:id="@+id/btnToAdd" android:layout_width="150dp" android:layout_height="wrap_content" android:background="@drawable/shape_common_green_bg" android:clickable="true" android:drawableLeft="@drawable/book_detail_info_add_img" android:drawablePadding="5dp" android:padding="10dp" android:text="@string/to_add" android:textColor="@color/white"/>
public class DrawableCenterButton extends Button { public DrawableCenterButton(Context context) { super(context); // TODO Auto-generated constructor stub } public DrawableCenterButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public DrawableCenterButton(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { Drawable[] drawables = getCompoundDrawables(); if (drawables != null) { Drawable drawableLeft = drawables[2]; if (drawableLeft != null) { float textWidth = getPaint().measureText(getText().toString()); int drawablePadding = getCompoundDrawablePadding(); int drawableWidth = 0; drawableWidth = drawableLeft.getIntrinsicWidth(); float bodyWidth = textWidth + drawableWidth + drawablePadding; setPadding(0, 0, (int)(getWidth() - bodyWidth), 0); canvas.translate((getWidth() - bodyWidth) / 2, 0); } } super.onDraw(canvas); } }
阅读全文
0 0
- 自定义控件让TextView、Button的drawableLeft和drawableRight与文本一起居中显示
- 自定义控件让TextView(Radiobutton)、Button的drawableLeft和drawableRight与文本一起居中显示
- TextView、Button的drawableLeft和drawableRight与文本一起居中显示
- Android 中TextView的DrawableLeft与DrawableRight与文字一起居中显示
- TextView的drawableLeft与文本一起居中显示(以及代码设置drawableLeft)
- 让TextView的drawableLeft与文本一起居中
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- drawableleft与文本一起居中显示
- Qt防止本程序多次启动
- Android Studio 中的 gradle 详解
- C#多线程学习(一) 多线程的相关概念
- 链表的创建与输出
- 升级Win下工具链以支持C++17
- TextView、Button的drawableLeft和drawableRight与文本一起居中显示
- UITableView嵌套WKWebView的那些坑
- Promise-使用整理
- 排序算法(三) —— 插入排序
- 机器学习实战 笔记 debug kNN (三)
- 数据库索引类型及实现方式
- MongoDB 与 MySQL操作数据库对比
- 2017半年总结
- GIT的简易搭建(Window下)