中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android如何自定義TextView去除paddingTop和paddingBottom

發布時間:2021-08-04 14:22:41 來源:億速云 閱讀:234 作者:小新 欄目:移動開發

這篇文章給大家分享的是有關Android如何自定義TextView去除paddingTop和paddingBottom的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Android 自定義TextView去除paddingTop和paddingBottom

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

Android如何自定義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, 0, textLength, mBounds);
    if (textLength == 0) {
      mBounds.right = mBounds.left;
    }
    return text;
  }
}

感謝各位的閱讀!關于“Android如何自定義TextView去除paddingTop和paddingBottom”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福海县| 凭祥市| 府谷县| 荔浦县| 如皋市| 西贡区| 德格县| 大田县| 渭源县| 乐平市| 大理市| 新河县| 潮州市| 乡城县| 石林| 搜索| 临沂市| 潢川县| 富顺县| 浦北县| 渝中区| 大城县| 阜平县| 廊坊市| 和政县| 郸城县| 上虞市| 宁夏| 石景山区| 广水市| 罗源县| 体育| 咸丰县| 上饶市| 朝阳市| 乌恰县| 贵州省| 长海县| 仁化县| 宣武区| 双鸭山市|