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; } }

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

时间: 2024-09-22 22:30:23

Android 自定义TextView去除paddingTop和paddingBottom的相关文章

android自定义textview怎么显示字体库图标

问题描述 android自定义textview怎么显示字体库图标 androd自定义textview怎么显示字体库图标,就是iconfont各位帮帮忙 解决方案 请参考 这篇文章http://blog.csdn.net/u013401219/article/details/46427503

Android自定义TextView实现文字倾斜效果_Android

前言 由于Android自带的TextView控件没有提供倾斜的(我暂时没有找到),我们可以自定义控件来实现,下面首先来看我们实现的效果图. TextView文字倾斜 其实实现很简单,下面我们来看实现步骤: 1.新建一个类 LeanTextView继承TextView public class LeanTextView extends TextView { public int getmDegrees() { return mDegrees; } public void setmDegrees(

Android自定义TextView实现drawableLeft内容居中

如何实现使用TextView的DrawableLeft使图片和文字居中显示呢??? 代码如下: 1.首先自定义一个类,继承TextView package com.test.signcalendar.weight; import android.content.Context; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.util.AttributeSet; i

Android自定义TextView跑马灯效果

Android自带的跑马灯效果不太好控制,还必须要满足条件才能有效果,而且速度不受控制.前面我的博客中有一篇就是用Android自带的跑马灯效果的,但是基于不同的使用效果,这里在网上找到了一个更好的方法.沿用了作者的一些方法,但是添加了更好的扩展功能,和大家一起分享.这里面有控制往左往右两个方向的实现. 1.首先是简单的布局main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&quo

Android 自定义TextView实现文本内容自动调整字体大小

最近做通讯录小屏机 联系人姓名显示--长度超过边界字体变小 /** * 自定义TextView,文本内容自动调整字体大小以适应TextView的大小 * @author yzp */ public class AutoFitTextView extends TextView { private Paint mTextPaint; private float mTextSize; public AutoFitTextView(Context context) { super(context); }

android 自定义TextView&amp;quot;会发脾气的TextView&amp;quot;

转载请注明出处王亟亟的大牛路 Git上看到的一个自定义控件就搞来研究研究,蛮可爱的. 项目结构: 运行效果:很Q谈,谈的图片什么都 都可以换哦 自定义View: public class JelloToggle extends FrameLayout { private static final int DEFAULT_DURATION = 1000;//动画持续时间 private static final int UNCHECKED_JELLO_COLOR = 0xffadadad;//初始

Android自定义TextView实现文字倾斜效果

前言 由于Android自带的TextView控件没有提供倾斜的(我暂时没有找到),我们可以自定义控件来实现,下面首先来看我们实现的效果图. TextView文字倾斜 其实实现很简单,下面我们来看实现步骤: 1.新建一个类 LeanTextView继承TextView public class LeanTextView extends TextView { public int getmDegrees() { return mDegrees; } public void setmDegrees(

自定义view-Android 自定义Textview

问题描述 Android 自定义Textview 就是实现这个类似进度条的Textview.谁有好的思路 或者代码的吗? 解决方案 下面是个seekbar 或者 porgressbar 上面再显示文字就好了 解决方案二: 使用TextView 和 ImageView就行,ImageView设置深的颜色和透明度覆盖TextView,动态改变ImageView的宽度就可以实现该效果了 解决方案三: 安卓巴士很多类似的源码,你可以下载参考下呀,www.apkbus.com 解决方案四: 有没有用自定义

android中TextView怎么用其他符号代替省略号

问题描述 android中TextView怎么用其他符号代替省略号 android:ellipsize = "middle" 省略号在中间,我想用"*"这个符号代替可以吗? 解决方案 试试看passwordchar 解决方案二: Android自定义TextView省略号样式