TextView изменен в соответствии с текстом - PullRequest
6 голосов
/ 14 апреля 2011

Я работаю над настраиваемым представлением, чтобы изменить размер текста внутри текстового представления, чтобы оно соответствовало (я не хочу многоточия).

Проблема, с которой я сталкиваюсь, заключается в том, что при измененииРазмер текста, само текстовое представление не переоценивается.Я посмотрел на источник и увидел, что setTextSize () вызывает следующее:

nullLayouts();
requestLayout();
invalidate();

Так что его следовало бы измерить заново.Это может быть ошибкой, потому что работает нормально на 2.3, а не на эмуляторах 1.6, 1.5 и 2.1.

Вот фрагмент кода, обратите внимание, что текстовое представление расширено:

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    if(w == 0 && h == 0) {
        setTextSize(TypedValue.COMPLEX_UNIT_PX, defaultSize);
    }

    updateView();
}

private void updateView() {
    int viewWidth = getViewWidth();
    float textWidth = getTextWidth();

    float textSize = textSize();
    while(textWidth > viewWidth && textSize >= MIN_TEXT_SIZE) {

        setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize-1);

        textSize = getTextSize();

        textWidth = getTextWidth();
    }
}

Может кто-нибудь дать мне подсказку в правильном направлении, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 24 июня 2011

В вашем XML-файле напишите следующий код.

<TextView
  android:layout_height="40dip"
  android:layout_width="100dip"/>

Короче говоря, в вашем XML-файле установите фиксированный размер вашего TextView.

...