Подтвердить что ты не робот

Textview, отрезающее письмо в android

http://dl.dropbox.com/u/24856/Screenshots/android/cutoff.png

Это скриншот из моего андроида. текст "asd". однако "d" слегка отрезан. вот соответствующий взгляд:

        <TextView
            android:id="@+id/stuff"
            android:padding="2dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/other_stuff"
            android:layout_marginTop="33dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textStyle="italic" />

любая идея относительно того, что вызывает это?

4b9b3361

Ответ 1

ни одно из упомянутых предложений не работает, в итоге появилось хакерское решение, которое добавляет пробел после последнего выделенного символа символа

Ответ 2

Хорошо, это довольно странно, но я изменился с android:maxLines="1" на android:singleLine="true", и теперь текст не обрезается.

Ответ 3

Я установил его с установкой ширины TextView для fill_parent вместо wrap_content...

Ответ 4

Это мое решение: Форматировать текстовое представление и измерение. После этого заданная ширина текстового изображения с 1 пикселем добавляется к измеренной ширине.

    TextView textView = new TextView(this);
    textView.setText("Text blah blah");
    textView.setTypeface(typeface, Typeface.BOLD_ITALIC)
    textView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
    textView.setLayoutParams(new LayoutParams(textView.getMeasuredWidth() + 1, LayoutParams.WRAP_CONTENT));

Работаю для меня. Надеюсь, что это поможет.

Ответ 5

может быть дополнением, попробуйте установить значение 0dp

также есть что-нибудь еще в макете?

Ответ 6

Вы можете использовать.

android:layout_width="fill_parent"

istead

android:layout_width="wrap_content"

Ответ 7

Я подозреваю, что проблема не возникнет, если вы не используете курсивный текст. Сначала я проверил бы это, и если использование не-курсивного текста отобразит его правильно, то это будет выглядеть как проблема рендеринга, которая потребует работы с дополнительным дополнением в TextView, чтобы позволить место для курсивных букв.

Ответ 8

проблема здесь - это курсивное свойство. Вы должны установить определенную ширину для своего текстового представления.

Ответ 9

Вы всегда можете создать пользовательский TextView, который будет использовать, например, этот шрифт (на самом деле это проблема с курсивом):

Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-LightItalic.ttf");
setTypeface(tf);

Подробнее здесь.

Ответ 10

Я столкнулся с той же проблемой, но с EditText при использовании некоторых шрифтов. Мое решение работает также с TextView:

  1. Используйте прокладку

  2. Как TextView с использованием Canvas.clipRect(float, float, float, float) в методе onDraw для обрезки - создайте собственный класс Canvas и переопределите этот метод (оставьте его пустым).

  3. Затем создайте пользовательский TextView и переопределите два метода onSizeChanged и onDraw.

В onSizeChanged создайте растровое изображение с размером TextView и нашим пользовательским Canvas.

В onDraw сначала рисуем растровое изображение, передавая наш собственный Canvas методу super.onDraw. После этого рисуем растровое изображение на целевой канва.

Более подробно в моем ответе на подобный вопрос здесь