Android 自定义TextView去除paddingTop和paddingBottom

发布时间 - 2026-01-11 03:07:48    点击率:

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

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # 自定义TextView  # 自定义TextView去除paddingTop  # Android中TextView和ImageView实现倾斜效果  # Android TextView实现带链接文字事件监听的三种常用方式示例  # Android用户输入自动提示控件AutoCompleteTextView使用方法  # Android TextView对齐的两种方法  # Android TextView实现图文混合编排的方法  # Android实现带动画效果的可点击展开TextView  # Android TextView中部分文字高亮显示  # Android自定义textview实现竖直滚动跑马灯效果  # Android中TextView显示圆圈背景或设置圆角的方法  # 自定义  # 有很多  # 如有  # 都没  # 希望能  # 所示  # 谢谢大家  # 需要用  # 可以做到  # 如下图  # 疑问请  # 网上  # import  # widget  # Context  # content  # common  # ef  # smallstar  # Danny 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  青岛网站建设如何选择本地服务器?  如何快速搭建高效服务器建站系统?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  教你用AI润色文章,让你的文字表达更专业  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何挑选高效建站主机与优质域名?  Python图片处理进阶教程_Pillow滤镜与图像增强  网站建设保证美观性,需要考虑的几点问题!  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  zabbix利用python脚本发送报警邮件的方法  中国移动官方网站首页入口 中国移动官网网页登录  网站制作报价单模板图片,小松挖机官方网站报价?  Android仿QQ列表左滑删除操作  如何快速生成凡客建站的专业级图册?  如何批量查询域名的建站时间记录?  如何用狗爹虚拟主机快速搭建网站?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  SQL查询语句优化的实用方法总结  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  如何在自有机房高效搭建专业网站?  Windows Hello人脸识别突然无法使用  jQuery 常见小例汇总  Laravel定时任务怎么设置_Laravel Crontab调度器配置  大型企业网站制作流程,做网站需要注册公司吗?  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  在线教育网站制作平台,山西立德教育官网?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何基于PHP生成高效IDC网络公司建站源码?  如何在橙子建站中快速调整背景颜色?  javascript中的try catch异常捕获机制用法分析  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  🚀拖拽式CMS建站能否实现高效与个性化并存?  如何选择PHP开源工具快速搭建网站?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何在服务器上配置二级域名建站?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  清除minerd进程的简单方法  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优