码迷,mamicode.com
首页 > 移动开发 > 详细

Android 自定义 TextView drawableTop 图标与文字左对齐(效果图)

时间:2014-10-30 19:14:12      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:des   android   style   blog   http   color   os   ar   java   

public class DrawableTopLeftTextView extends TextView {

	private Paint mPaint;
	private float fFontHeight;
	private Drawable[] drawables;
	private int leftMargin = 40; //TODO 这个要通过代码获取,不能硬编码

	public DrawableTopLeftTextView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		init();
	}

	public DrawableTopLeftTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		init();
	}

	public DrawableTopLeftTextView(Context context) {
		super(context);
		init();
	}

	private void init() {
		mPaint = getPaint();
		//mPaint.setTextSize(56.0f);
		mPaint.setColor(Color.parseColor("#cccccccc"));
		FontMetrics fm = mPaint.getFontMetrics();
		fFontHeight = (float) Math.ceil(fm.descent - fm.ascent);
		drawables = getCompoundDrawables();
	}

	@Override
	protected void onDraw(Canvas canvas) {
		if (drawables != null) {
			Drawable drawable = drawables[1]; // top
			if (drawable != null) {
				final float textY = getY() + drawable.getIntrinsicHeight() + fFontHeight - 5;
				canvas.drawText(getText().toString(), 0, textY, mPaint);
				canvas.clipRect(drawable.getBounds());
				canvas.drawBitmap(getBitmap(drawable), getLeft()+leftMargin, getTop(), mPaint);
				drawable.draw(canvas);
				canvas.save();
			}
		}
		super.onDraw(canvas);
	}
	
	private final static Bitmap getBitmap(Drawable drawable){
		BitmapDrawable bd = (BitmapDrawable) drawable;
		return bd.getBitmap();
	}
}


<com.bluetooth.light.widget.DrawableTopLeftTextView
            android:id="@+id/signal_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="10dp"
            android:drawableTop="@drawable/signal_logo"
            android:text="@string/signal"
            android:textColor="#cccccccc"
            android:textSize="24sp" />


效果图
bubuko.com,布布扣

Android 自定义 TextView drawableTop 图标与文字左对齐(效果图)

标签:des   android   style   blog   http   color   os   ar   java   

原文地址:http://blog.csdn.net/tangcheng_ok/article/details/40624101

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!