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


    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" />


    效果图

  • 相关阅读:
    scala学习笔记1(表达式)
    TDD实践感悟
    Day 21:Docker 入门教程
    人类创造未来的思想先锋:这些 TED 演示深深震撼着我们
    Android开源项目第二篇——工具库篇
    提交表单
    MVC html.beginform & ajax.beginform
    MVC中的传参并在View中获取
    HTTP 教程
    ID和Name
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5220264.html
Copyright © 2020-2023  润新知