How to remove the top and bottom space on textview of Android
Try android:includeFontPadding="false"
to see if it helps. In my experience that will help a little bit, but there's no way of reducing the TextView dimensions to the exact pixel-perfect text size.
The only alternative, which may or may not give better results, is to cheat a bit and hard-wire the dimensions to match the text size, e.g. "24sp"
instead of "wrap_content"
for the height.
I had the same problem. Attribute android:includeFontPadding="false"
does not work for me. I've solved this problem in this way:
public class TextViewWithoutPaddings extends TextView { private final Paint mPaint = new Paint(); private final Rect mBounds = new Rect(); public TextViewWithoutPaddings(Context context) { super(context); } public TextViewWithoutPaddings(Context context, AttributeSet attrs) { super(context, attrs); } public TextViewWithoutPaddings(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:includeFontPadding="false"
is pretty good but it does not get it precisely. sometimes you want border line accuracy so you can figure it out yourself by applying negative margins:
try setting your bottom and top margins to a negative value.
something like this:
android:layout_marginTop="-5dp"android:layout_marginBottom="-5dp"
adjust the values accordingly.