欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android自定义TextView实现drawableLeft内容居中

程序员文章站 2023-01-02 23:11:20
如何实现使用textview的drawableleft使图片和文字居中显示呢??? 代码如下: 1.首先自定义一个类,继承textview packag...

如何实现使用textview的drawableleft使图片和文字居中显示呢???

代码如下:

1.首先自定义一个类,继承textview

package com.test.signcalendar.weight;

import android.content.context;
import android.graphics.canvas;
import android.graphics.drawable.drawable;
import android.util.attributeset;
import android.widget.textview;

/**
 * 自定义textview,实现drawableleft可以和文字一起居中
 * @author hlq
 * @createtime 2016年3月20日04:14:36
 *
 */
public class drawablecentertextview extends textview {

  public drawablecentertextview(context context, attributeset attrs,
      int defstyle) {
    super(context, attrs, defstyle);
  }

  public drawablecentertextview(context context, attributeset attrs) {
    super(context, attrs);
  }

  public drawablecentertextview(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) / 2, 0);
      }
    }
    super.ondraw(canvas);
  }
}

2.之后在xml布局文件中直接引用即可。。。

<com.test.signcalendar.weight.drawablecentertextview
          android:id="@+id/textview1111"
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:drawableleft="@drawable/fmhp_mine_health_plan_signcalendar_finish_status_bg"
          android:drawablepadding="5dp"//给图片和文字之间设置填充
          android:text="都完成"
          android:textcolor="#333333"
          android:textsize="12sp" />

3。ok实现效果 如下。。。

Android自定义TextView实现drawableLeft内容居中

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!