最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Android DrawableTextView图片文字居中显示实例
时间:2017-05-11 编辑:简简单单 来源:一聚教程网
在我们开发中,TextView设置Android:drawableLeft一定使用的非常多,但Drawable和Text同时居中显示可能不好控制,有没有好的办法解决呢?
小编的方案是通过自定义TextView实现。
实现的效果图:
注:第一行为原生TextView添加android:drawableLeft
第二行为自定义TextView实现的效果。
实现思路:
继承TextView,覆盖onDraw(Canvas canvas),在onDraw中先将canvas进行translate平移,再调用父类onDraw进行绘制。
代码如下 | 复制代码 |
DrawableTextView.Java: packagecom.xing.drawabletextview; importandroid.content.Context; importandroid.graphics.Canvas; importandroid.graphics.drawable.Drawable; importandroid.util.AttributeSet; importandroid.widget.TextView; /** * Created by Administrator on 2017/2/28. */ publicclassDrawableTextViewextendsTextView { publicDrawableTextView(Context context) { this(context,null); } publicDrawableTextView(Context context, AttributeSet attrs) { this(context, attrs,0); } publicDrawableTextView(Context context, AttributeSet attrs,intdefStyleAttr) { super(context, attrs, defStyleAttr); } @Override protectedvoidonDraw(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的宽度 intleftDrawableWidth = leftDrawable.getIntrinsicWidth(); // 得到drawable与text之间的间距 intdrawablePadding = getCompoundDrawablePadding(); // 得到文本的宽度 inttextWidth = (int) getPaint().measureText(getText().toString().trim()); intbodyWidth = 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+"/> |
-
上一个: 百度网盘超级会员电子卡有什么作用 多少钱
-
下一个: 百度账号不实名认证会有什么后果
相关文章
- sora软件价格介绍 02-22
- sora官网入口地址一览 02-22
- Sora生成的视频使用教程 02-22
- 《梦幻西游》元宵灯谜线索答案大全2024 02-22
- 《原神》有朋自远方来第一天通关攻略 02-22
- 《苏醒之路》四个结局达成攻略 02-22