当前位置: 移动技术网 > IT编程>移动开发>Android > Android DrawableTextView图片文字居中显示实例

Android DrawableTextView图片文字居中显示实例

2019年07月24日  | 移动技术网IT编程  | 我要评论

飞七,安普生,搜秀影城

 在我们开发中,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);
  }
}

布局文件中引入:

<linearlayout
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="horizontal">
    <com.xing.drawabletextview.drawabletextview
      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" />
    <com.xing.drawabletextview.drawabletextview
      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" />
    <com.xing.drawabletextview.drawabletextview
      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+" />
  </linearlayout>

以上所述是小编给大家介绍的android drawabletextview图片文字居中显示实例,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网