android动态设置文本居中显示图片,Android DrawableTextView图片文字居中显示实例
在我们开发中,TextView设置Android:drawableLeft一定使用的非常多,但Drawable和Text同时居中显示可能不好控制,有没有好的办法解决呢?
小编的方案是通过自定义TextView实现。
实现的效果图:
注:第一行为原生TextView添加android:drawableLeft
第二行为自定义TextView实现的效果。
实现思路:
继承TextView,覆盖onDraw(Canvas canvas),在onDraw中先将canvas进行translate平移,再调用父类onDraw进行绘制。
DrawableTextView.Java:
package com.xing.drawabletextview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Created by Administrator on 2017/2/28.
*/
public class DrawableTextView extends TextView {
public DrawableTextView(Context context) {
this(context, null);
}
public DrawableTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public DrawableTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
// getCompoundDrawables() : Returns drawables for the left, top, right, and bottom borders.
Drawable[] drawables = getCompoundDrawables();
// 得到drawableLeft设置的drawable对象
Drawable leftDrawable = drawables[0];
if (leftDrawable != null) {
// 得到leftDrawable的宽度
int leftDrawableWidth = leftDrawable.getIntrinsicWidth();
// 得到drawable与text之间的间距
int drawablePadding = getCompoundDrawablePadding();
// 得到文本的宽度
int textWidth = (int) getPaint().measureText(getText().toString().trim());
int bodyWidth = leftDrawableWidth + drawablePadding + textWidth;
canvas.save();
canvas.translate((getWidth() - bodyWidth) / 2, 0);
}
super.onDraw(canvas);
}
}
布局文件中引入:
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal">
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_one"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:text="21" />
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_two"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:text="99" />
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_three"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:text="99+" />
以上所述是小编给大家介绍的Android DrawableTextView图片文字居中显示实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
android动态设置文本居中显示图片,Android DrawableTextView图片文字居中显示实例相关推荐
- android动态设置文本居中显示图片,android按钮图片和文本居中的代码-你躺枪了吗...
最近优化项目代码时,发现一个比较诡异的现象:每当界面进入ActivityA时,cpu在不断的消耗,内存在不断的缓慢增长(虽然每次增长的量非常小).如下图: 屏幕快照 2016-07-24 12.26. ...
- android 动态设置padding,Android动态设置控件大小以及设定margin以及padding值
http://www.aichengxu.com/Java/73893.htm Android动态设置控件大小以及设定margin以及padding值,有需要的朋友可以参考下. 一.概述 在andro ...
- android 动态改变语言,android动态设置app当前运行语言的方法
android开发中有时候碰到切换语言的需求,这时候需要通过代码动态改变当前运行语言. package com.example.androidtest; import java.util.Locale ...
- Android 动态设置宽高
Android 动态设置宽高 val params: FrameLayout.LayoutParams = view?.layoutParams as FrameLayout.LayoutParams ...
- android textview layoutparams,Android动态设置布局的LayoutParams属性总遇到造型异常
Android动态设置布局的setLayoutParams()属性总遇到造型异常问题 android:id="@+id/introduce" android:layout_widt ...
- Python图像处理-使用PIL模块在图片上生成的文字居中显示
主要解决在图片上面写的文字并把文字居中显示 PIL 安装 pip install pillow 初始图片 基本使用 # 导入需要的包 from PIL import Image, ImageDraw ...
- SSRS动态设置文本框属性
SSRS可以通过表达式动态设置文本框所有的属性,比如字体,字号,是否加粗,如下图所示: 汉字和数字英文字母占用的空间不一样,一个汉字占用两个数字和英文字母的空间,VB里有LENB取得字节数,这SSRS ...
- HTML图片和多行文字并列显示
上课涉及到一点HTML编程,有的时候网页上有图片和多行文字并列显示的情况,类似下面的简历那样: 查阅了一些方法,才得以实现.记录在这里,以备后用,也方便后来人. 首先,可以采用无边框table实现图片 ...
- android动态设置EditText显示英文带数字键盘
开启软键盘和隐藏软键盘 //软键盘控制器 InputMethodManagerimm =(InputMethodManager)getActivity().getSystemService(Conte ...
最新文章
- 蚂蚁金服“刷脸”支付技术解读:错误率低于百万分之一
- 强化学习样本复杂性综述
- vs2005sp1安装加速
- mysql查询时给字段加内容,mysql数据库查询之对应库对应表中的注释信息查询以及加字段查询...
- 【DWR系列04】- DWR配置详解
- 一台25万公里卡罗拉的返老还童记
- ASP.NET在IIS7中上下文中不可用
- 数组序列化 java_Java基础之数组序列化、反序列化 小发现(不知道 是不是有问题)...
- mybatisplus 操作另一个数据库的数据_MySQL数据库的基础操作
- docker容器配置加速器
- 第48次《中国互联网络发展状况统计报告》
- Java基础知识强化84:System类之exit()方法和currentTimeMillis()方法
- 职工信息管理系统C++代码
- 戴尔微型计算机7050配置,戴尔 Dell OptiPlex 7060 微型机体验分享 - 1升的迷你小钢炮...
- 拆解一个老式电感电容表
- 怎样能把在线视频(不提供下载)储存下来到电脑
- 矩阵运算-克罗内克积⨂ Hadamard乘积 2022年3月24日
- 网格设计版式设计_编辑版式,排除项和CSS网格
- SG3525频率和占空比参数的选取
- 世上安得两全法,不负如来不负卿?