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
原创粉丝点击