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虚拟机安装与调优

