Android 自定义TextView去除paddingTop和paddingBottom

Android 自定义TextView去除paddingTop和paddingBottom,第1张

概述Android自定义TextView去除paddingTop和paddingBottom最近项目中需要用libgdx渲染一个Android的TextView,但是绘制出来的TextView总是默认带有paddingTop和paddingBottom,如下图所示:

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1144553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存