全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android 自定义TextView去除paddingTop和paddingBottom

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小时内与您取得联系。