</pre><pre name="code" class="html"> <LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<com.mypackage.drawbleandtext.center.DrawableLeftCenterTextView
android:id="@+id/drawable_left"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:drawableLeft="@drawable/tab_focus"
android:gravity="center_vertical"
android:text="资料"
android:textColor="#000000"
android:textSize="18sp" />
<com.mypackage.drawbleandtext.center.DrawableLeftCenterTextView
android:id="@+id/drawable_right"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:drawableLeft="@drawable/tab_news"
android:gravity="center_vertical"
android:text="设置"
android:textColor="#000000" />
<com.mypackage.drawbleandtext.center.DrawableRightCenterTextView
android:id="@+id/drawable_right1"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:drawableRight="@drawable/tab_pics"
android:gravity="center_vertical"
android:text="主页"
android:textColor="#000000" />
</LinearLayout>
代码一:
/**
* 自定义控件,使用drawableLeft与text水平居中显示
*/
public class DrawableLeftCenterTextView extends TextView {
public DrawableLeftCenterTextView(Context context) {
super(context);
}
public DrawableLeftCenterTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DrawableLeftCenterTextView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@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);
}
}
/**
* 自定义控件,使用drawableRight与text水平居中显示
*/
public class DrawableRightCenterTextView extends TextView {
public DrawableRightCenterTextView(Context context) {
super(context);
}
public DrawableRightCenterTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DrawableRightCenterTextView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
Drawable[] drawables = getCompoundDrawables();//left,top,right,bottom
if(drawables != null){
Drawable drawableRight = drawables[2];
if(drawableRight != null){
float textWidth = getPaint().measureText(getText().toString());
int drawablePadding = getCompoundDrawablePadding();
int drawableWidth = 0;
drawableWidth = drawableRight.getIntrinsicWidth();
float bodyWidth = textWidth + drawableWidth + drawablePadding;
setPadding(0, 0, (int)(getWidth() - bodyWidth), 0);
canvas.translate((getWidth() - bodyWidth) / 2, 0);
}
}
super.onDraw(canvas);
}
}