国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 自定義TextView去除paddingTop和paddingBottom

2019-10-22 18:28:25
字體:
來源:轉載
供稿:網友

Android 自定義TextView去除paddingTop和paddingBottom

最近項目中需要用libgdx渲染一個Android的TextView, 但是繪制出來的TextView總是默認帶有paddingTop和paddingBottom, 如下圖所示:

Android,自定義TextView,自定義TextView去除paddingTop

網上有很多解決方案,例如在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, 0, textLength, mBounds);    if (textLength == 0) {      mBounds.right = mBounds.left;    }    return text;  }}

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彝良县| 那曲县| 巴东县| 定陶县| 靖西县| 拜城县| 微博| 双流县| 重庆市| 瑞昌市| 泸定县| 静海县| 海林市| 长乐市| 青岛市| 宜宾县| 自治县| 和平县| 台州市| 海伦市| 淳化县| 苏州市| 囊谦县| 新化县| 镇沅| 宜黄县| 韩城市| 工布江达县| 佛冈县| 扶沟县| 宜宾县| 浠水县| 江阴市| 雷波县| 巫溪县| 灵璧县| 黄石市| 花垣县| 喜德县| 威信县| 河池市|