Как оправдывать текст TextView в Android?

Выше сказанное в вопросе. Как я оправдываю текст одного TextView в Android? Он не принимает меня layout_gravity ни gravity.

Чтобы считать:

  • Не используя WebView даже не дериваты этого.
  • Не используя книжных магазинов третьих.
1
задан 17.03.2016, 09:55
3 ответа

Я utilicГ© это, что я encontrГ© из-за ahГ-:

CreГ© так называемый класс JustifyTextView:

public class JustifyTextView extends TextView {

private int mLineY;
private int mViewWidth;

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

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    super.onLayout(changed, left, top, right, bottom);
}

@Override
protected void onDraw(Canvas canvas) {
    TextPaint paint = getPaint();
    paint.setColor(getCurrentTextColor());
    paint.drawableState = getDrawableState();
    mViewWidth = getMeasuredWidth();
    String text = (String) getText();
    mLineY = 0;
    mLineY += getTextSize();
    Layout layout = getLayout();
    for (int i = 0; i < layout.getLineCount(); i++) {
        int lineStart = layout.getLineStart(i);
        int lineEnd = layout.getLineEnd(i);
        String line = text.substring(lineStart, lineEnd);

        float width = StaticLayout.getDesiredWidth(text, lineStart, lineEnd, getPaint());
        if (needScale(line)) {
            drawScaledText(canvas, lineStart, line, width);
        } else {
            canvas.drawText(line, 0, mLineY, paint);
        }

        mLineY += getLineHeight();
    }
}

private void drawScaledText(Canvas canvas, int lineStart, String line, float lineWidth) {
    float x = 0;
    if (isFirstLineOfParagraph(lineStart, line)) {
        String blanks = "  ";
        canvas.drawText(blanks, x, mLineY, getPaint());
        float bw = StaticLayout.getDesiredWidth(blanks, getPaint());
        x += bw;

        line = line.substring(3);
    }

    float d = (mViewWidth - lineWidth) / line.length() - 1;
    for (int i = 0; i < line.length(); i++) {
        String c = String.valueOf(line.charAt(i));
        float cw = StaticLayout.getDesiredWidth(c, getPaint());
        canvas.drawText(c, x, mLineY, getPaint());
        x += cw + d;
    }
}

private boolean isFirstLineOfParagraph(int lineStart, String line) {
    return line.length() > 3 && line.charAt(0) == ' ' && line.charAt(1) == ' ';
}

private boolean needScale(String line) {
    if (line.length() == 0) {
        return false;
    } else {
        return line.charAt(line.length() - 1) != '\n';
    }
}}

В Textview, что querГ, - чтобы оправдывать, я поместил это ему:

   <tu.paquete.app.JustifyTextView style="@style/TextColor"
        android:layout_width="331dp"
        android:layout_height="wrap_content"
        android:text="@string/credits_description"
        android:id="@+id/premiumCreditsDescTextView"

        android:layout_marginTop="8dip"
        android:layout_marginLeft="7dp"
        android:paddingLeft="5dp" />
3
ответ дан 24.11.2019, 14:46

В настоящее время не возможно оправдывать текст до dГ - в сегодняшнего дня (API 23). Я увидел, что ты обработал информацию с

android:gravity="right"

и

android:layout_gravity="right"

В нашем случае, мы были должны использовать одна librerГ - в третьих TextJustify и в каких-то случаях мы используем cГіdigo HTML, чтобы оправдывать текст внутри одного WebView.

1
ответ дан 24.11.2019, 14:46

AГ±adiendo внутри этикетки TextView, что ты хочешь оправдать android:layout_gravity="center_horizontal"

, Помни, что у тебя должны быть layout_width в match_parent. В mГ - не я apareciГі оправданный в предварительном виде, но когда он это выполнит в участнике соревнования, если apareciГі оправданный. Здесь я оставляю тебе пример:

<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="@dimen/tb"
android:text="text"
android:textColor="@android:color/black" />
1
ответ дан 24.11.2019, 14:46
  • 1
    Я это сделал с API 22, так что я не верю в то, что ты ningú n проблема – Ignacio Belmonte 11.04.2018, 01:23