Как уменьшить дополнительное пространство при запуске TextView? - PullRequest
0 голосов
/ 25 июня 2018

Разработка пользовательских TextView, и я хочу удалить лишние пробелы перед текстом в TextView.

Я попытался установить padding = 0dp и android:includeFontPadding="false", но все еще добавляет пробел.

<TextView
        android:layout_width="match_parent"
        android:text="LorenIP Some"
        android:textColor="#00FF00"
        android:background="#FFF"
        android:padding="0dp"    
        android:includeFontPadding="false"
        android:textSize="40dp"
        android:layout_height="wrap_content" />

enter image description here

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вы должны использовать пользовательский TextView и переопределить метод onDraw ()

    public class MyTextView extends AppCompatTextView {

    private final Paint mPaint = new Paint();

    private final Rect mBounds = new Rect();

    public MyTextView(Context context) {
        super(context);
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onDraw( 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;
    }
}

В XML Используйте это

<com.example.TestApp.MyTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="LorenIP Some" />
0 голосов
/ 25 июня 2018

Вы можете попробовать includeFontPadding атрибут в макете XML:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:includeFontPadding="false"/>

ИЛИ в JAVA:

TextView textView = findViewById(R.idl.textview);
textView.setIncludeFontPadding(false);

Документы:

setIncludeFontPadding

includeFontPadding

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...