@OverrIDe protected voID onDraw(Canvas canvas) { if (isTextDrawableCenter) { if (drawabletop != null || drawableBottom != null) { int textHeight,drawableHeight; //文本行数*行高度(行高度包含getlinespacingExtra()) if (getMaxlines() < getlineCount()) { textHeight = getMaxlines()*getlineHeight(); } else { textHeight = getlineCount()*getlineHeight(); } drawableHeight = drawabletopHeight + drawableBottomHeight; float bodyHeight = textHeight + drawableHeight + getCompoundDrawablepadding(); int dy = (int) ((getHeight() - bodyHeight) * 0.5f); setpaddingrelative(0, dy,0,dy);// canvas.translate(0, dy); } if (drawableleft != null || drawableRight != null) { float textWIDth; int drawableWIDth; Rect rect = new Rect(); //计算文本宽度 textWIDth = getPaint().measureText(getText().toString()); drawableWIDth = drawableleftWIDth + drawableRightWIDth; float bodyWIDth = textWIDth + drawableWIDth + getCompoundDrawablepadding(); int dx = (int) ((getWIDth() - bodyWIDth) * 0.5f); setpaddingrelative(dx, 0,dx,0); } } super.onDraw(canvas); }
遇到问题:canvas.translate()偏移整个canvas,导致水平或垂直方向的图片会显示不全(解决:通过setpaddingrelative()设置偏移量,虽然可以实现效果,但是该方法会执行requestLayout())TextVIEw的文字不居中(解决:使用setGravity()设置内容水平或垂直居中)设置左右图片和文字居中时,文字不换行(没解决)总结:实现图片和文字居中,完全可以使用布局嵌套TextVIEw(方便,没BUG)
github:https://github.com/wudengwei/TextStrongView
总结以上是内存溢出为你收集整理的Android TextView的图片和文字居中探索全部内容,希望文章能够帮你解决Android TextView的图片和文字居中探索所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)