91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

仁怀市| 宁蒗| 成武县| 赞皇县| 武川县| 柳林县| 贡嘎县| 新田县| 扬州市| 金平| 天台县| 贡山| 平邑县| 武平县| 马公市| 来安县| 电白县| 营山县| 东乡族自治县| 北川| 静海县| 龙岩市| 洛宁县| 海南省| 社旗县| 淮阳县| 穆棱市| 遂昌县| 罗城| 湄潭县| 韶关市| 长泰县| 集贤县| 迁西县| 兖州市| 西乡县| 建阳市| 盖州市| 永德县| 定兴县| 凌云县|