AndroID 自定义TextVIEw去除paddingtop和paddingBottom
最近项目中需要用libgdx渲染一个AndroID的TextVIEw, 但是绘制出来的TextVIEw总是默认带有paddingtop和paddingBottom, 如下图所示:
网上有很多解决方案,例如在xml中设置如下属性:
androID:linespacingMultiplIEr="0.8"androID:includeFontpadding="false"
或者设置margin为负值等等。 但是以上方法在6.0之后都没什么卵用。
只有一种方法可以做到,就是自定义TextVIEw
package com.ef.smallstar.common.Widget;import androID.content.Context;import androID.graphics.Canvas;import androID.graphics.Paint;import androID.graphics.Rect;import androID.support.annotation.NonNull;import androID.util.AttributeSet;/** * Created by Danny on 17/8/28. * * this is a AndroID TextVIEw without padding top & padding bottom */public class TextVIEwWithoutpadding extends androID.support.v7.Widget.AppCompatTextVIEw { private final Paint mPaint = new Paint(); private final Rect mBounds = new Rect(); public TextVIEwWithoutpadding(Context context) { super(context); } public TextVIEwWithoutpadding(Context context,AttributeSet attrs) { super(context,attrs); } public TextVIEwWithoutpadding(Context context,AttributeSet attrs,int defStyleAttr) { super(context,attrs,defStyleAttr); } @OverrIDe protected voID onDraw(@NonNull Canvas canvas) { final String text = calculateTextParams(); final int left = mBounds.left; final int bottom = mBounds.bottom; mBounds.offset(-mBounds.left,-mBounds.top); mPaint.setAntiAlias(true); mPaint.setcolor(getCurrentTextcolor()); canvas.drawText(text,-left,mBounds.bottom - bottom,mPaint); } @OverrIDe protected voID onMeasure(int wIDthMeasureSpec,int heightmeasureSpec) { super.onMeasure(wIDthMeasureSpec,heightmeasureSpec); calculateTextParams(); setMeasuredDimension(mBounds.wIDth() + 1,-mBounds.top + 1); } private String calculateTextParams() { final String text = getText().toString(); final int textLength = text.length(); mPaint.setTextSize(getTextSize()); mPaint.getTextBounds(text,textLength,mBounds); if (textLength == 0) { mBounds.right = mBounds.left; } return text; }}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
总结以上是内存溢出为你收集整理的Android 自定义TextView去除paddingTop和paddingBottom全部内容,希望文章能够帮你解决Android 自定义TextView去除paddingTop和paddingBottom所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)