DrawableLeftCenterButton.java
1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.lotus.town.widget;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
class DrawableLeftCenterButton extends android.support.v7.widget.AppCompatButton {
public DrawableLeftCenterButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
canvas = getTopCanvas(canvas);
super.onDraw(canvas);
}
private Canvas getTopCanvas(Canvas canvas) {
Drawable[] drawables = getCompoundDrawables();
if (drawables == null) {
return canvas;
}
Drawable drawable = drawables[0];// 左面的drawable
if (drawable == null) {
drawable = drawables[2];// 右面的drawable
}
if(drawable == null){
return canvas;
}
// float textSize = getPaint().getTextSize(); // 使用这个会导致文字竖向排下来
float textSize = getPaint().measureText(getText().toString());
int drawWidth = drawable.getIntrinsicWidth();
int drawPadding = getCompoundDrawablePadding();
float contentWidth = textSize + drawWidth + drawPadding;
int leftPadding = (int) (getWidth() - contentWidth);
setPadding(0, 0, leftPadding, 0); // 直接贴到左边
float dx = (getWidth() - contentWidth) / 2;
canvas.translate(dx, 0);// 往右移动
return canvas;
}
}