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
相关文章:
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
5种Android数据存储方式汇总
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
建站之星安装后如何自定义网站颜色与字体?
如何通过VPS建站无需域名直接访问?
上海网站制作开发公司,上海买房比较好的网站有哪些?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何通过cPanel快速搭建网站?
如何在企业微信快速生成手机电脑官网?
建站主机解析:虚拟主机配置与服务器选择指南
如何通过PHP快速构建高效问答网站功能?
浅谈Javascript中的Label语句
如何快速生成可下载的建站源码工具?
C++如何使用std::optional?(处理可选值)
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
北京网站制作网页,网站升级改版需要多久?
太原网站制作公司有哪些,网约车营运证查询官网?
如何通过远程VPS快速搭建个人网站?
如何做网站制作流程,*游戏网站怎么搭建?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
建站之星ASP如何实现CMS高效搭建与安全管理?
如何用IIS7快速搭建并优化网站站点?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
如何配置WinSCP新建站点的密钥验证步骤?
盐城做公司网站,江苏电子版退休证办理流程?
建站主机选择指南:服务器配置与SEO优化实战技巧
焦点电影公司作品,电影焦点结局是什么?
如何选择高效可靠的多用户建站源码资源?
手机网站制作与建设方案,手机网站如何建设?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
如何在新浪SAE免费搭建个人博客?
css网站制作参考文献有哪些,易聊怎么注册?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
在线制作视频网站免费,都有哪些好的动漫网站?
广东企业建站网站优化与SEO营销核心策略指南
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
制作公司内部网站有哪些,内网如何建网站?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
C++中引用和指针有什么区别?(代码说明)
建站之星安装后如何配置SEO及设计样式?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
*请认真填写需求信息,我们会在24小时内与您取得联系。