Android 实现Html Li标签效果
来源:互联网 发布:acrobat x pro mac 编辑:程序博客网 时间:2024/06/07 00:50
其实如果每条内容只有一行的话,用drawableLeft就可以实现了,问题是当有不止一行的情况下,这个drawableLeft是相对于整个TextView的高度居中的。
所有不能单纯的使用drawableLeft来显示。
所有不能单纯的使用drawableLeft来显示。
我的做法是自定义一个Drawable,继承Drawable类,并重写onDraw方法
LiDrawable
public class LiDrawable extends Drawable { private Drawable mDrawable; private int mLineHeight; public LiDrawable(Drawable drawable, TextView tv) { this.mDrawable = drawable; this.mLineHeight = tv.getLineHeight(); } @Override public void draw(Canvas canvas) { int halfCanvas= canvas.getHeight() / 2; int halfDrawable = mDrawable.getIntrinsicHeight() / 2; // TODO align to other positions; canvas.save(); canvas.translate(0, -halfCanvas + halfDrawable + mLineHeight / 2); mDrawable.draw(canvas); canvas.restore(); } @Override public int getIntrinsicWidth() { return mDrawable.getIntrinsicWidth(); } @Override public int getIntrinsicHeight() { return mDrawable.getIntrinsicHeight(); } @Override public void setAlpha(int alpha) { } @Override public void setColorFilter(ColorFilter cf) { } @Override public int getOpacity() { return 0; }}LiTextView
public class LiTextView extends TextView { private Drawable mDrawable; private LiDrawable mLiDrawable; public LiTextView(Context context) { this(context, null); } public LiTextView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public LiTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs); } private void init(Context context, AttributeSet attrs) { TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.LiTextView, 0, 0); try { mDrawable = a.getDrawable(R.styleable.LiTextView_liDrawable); } finally { a.recycle(); } setupLiDrawable(); } private void setupLiDrawable() { if (mDrawable != null) { mLiDrawable = new LiDrawable(mDrawable, this); mDrawable.setBounds(0, 0, mDrawable.getIntrinsicWidth(), mDrawable.getIntrinsicHeight()); mLiDrawable.setBounds(0, 0, mDrawable.getIntrinsicWidth(), mDrawable.getIntrinsicHeight()); setCompoundDrawables(mLiDrawable, null, null, null); } } public void setLiDrawable(Drawable drawable) { this.mDrawable = drawable; setupLiDrawable(); } public void setLiDrawableResource(int drawableRes) { this.mDrawable = getResources().getDrawable(drawableRes); setupLiDrawable(); }}
0 0
- Android 实现Html Li标签效果
- JQuery操作html实现<li>标签上移和下移效果
- <ul><li>标签实现<select>标签效果
- HTML <li> 标签实现不换行
- HTML的<li>标签
- Html-3.<li> 标签
- html使用ul li 标签实现多级横向菜单
- html 中的LI标签
- 【CSS.DIV】HTML<li>标签
- HTML标签marquee实现滚动效果
- HTML标签marquee实现滚动效果
- HTML标签marquee实现滚动效果
- HTML标签marquee实现滚动效果
- HTML标签marquee实现滚动效果
- HTML标签marquee实现滚动效果
- HTML标签marquee实现滚动效果
- HTML标签marquee实现滚动效果
- HTML标签marquee实现滚动效果
- 欧拉路问题
- Android最佳性能实践(三)——高性能编码优化
- 虚拟内存机制和内存映射文件原理探索
- yum 详细配置
- R语言学习(附:机器学习资源汇总链接)
- Android 实现Html Li标签效果
- jquery cache(数据缓存)
- maven环境快速搭建
- Python的内存管理
- 多线程知识风暴
- [转] android自定义布局中的平滑移动
- app被拒原因
- Android最佳性能实践(四)——布局优化技巧
- 已生成用于更新的 ResultSet