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);
}
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);
}
}