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