Android 自己定义 TextView drawableTop 图标与文字左对齐(效果图)
2016-02-26 14:13
531 查看
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 SwipeRefreshLayout下拉刷新与上拉加载+滑动删除
- Android studio 中 butterknife zelezny 的使用
- Android:实现仿 美团/淘宝 多级分类菜单效果
- Android support library 23.2新特性介绍
- android事件传递机制测试分析
- Android按钮的各个样式设置
- 极光推送,极光IM使用指南(AndroidStudio)
- Android之USB转串口通信
- Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)
- Android Studio中获取SHA1或MD5的方法
- android ScheduleExecutorService定时周期执行指定任务
- Android开发深化之关于自定义GridView控件的实现
- Android 开源项目分类汇总
- android 一行代码,快速实现图片验证码(附android studio 版小demo)
- android6.0 Phone源码分析之Phone适配过程
- Android Launcher抽屉类SlidingDrawer的使用!
- Android常用名令集锦
- <转>Android 文件夹访问路径~
- AndroidStudio使用注意事项
- Android 文件导入导出命令