首页 > 代码库 > Android 自定义 TextView drawableTop 图标与文字左对齐(效果图)
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" />效果图
Android 自定义 TextView drawableTop 图标与文字左对齐(效果图)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。