Когда Pinch zoom Textview на Android, текст непреднамеренно обрезается

Мы разрабатываем собственное текстовое представление, которое увеличивает/уменьшает масштаб в зависимости от жеста сжатия и может изменять размер текстового изображения и масштабировать текст. Но при уменьшении этого представления текст непреднамеренно обрезается.

Мы пишем такой код.

1. Получите масштабированное значение в прослушивателе жестов и postScale в onDraw()

2. Рассчитайте новый размер представления по макету (int, int, int, int)

    @Override
public void onDraw(Canvas canvas) {         

    android.graphics.Matrix m = new android.graphics.Matrix();          
    m.postScale(mScaleFactor, mScaleFactor);    
    canvas.concat(m);
    layout((int) l, (int) t, (int)r , (int) b );

    super.onDraw(canvas);
}

person Kenta Odamudo Shoji    schedule 17.06.2013    source источник
comment
можешь выложить скриншот?   -  person dd619    schedule 17.06.2013
comment
Попробуйте расширить AutoResizeTextView Чейза Колберна.   -  person Ali    schedule 17.06.2013
comment
@ dd619 Извините, у меня нет разрешения на загрузку изображения. Но вот URL на скриншоте. до уменьшения gyazo.com/faa0cfa84fcedc5dd79941b76fc62c5e после уменьшения gyazo.com/1b0e789f29c0b78200c6b39627f6dc83   -  person Kenta Odamudo Shoji    schedule 18.06.2013
comment
@Ali Спасибо за совет. Я пытаюсь использовать этот класс в своем приложении. Однако, когда я пытаюсь увеличить этот расширенный TextView с помощью щипка, текст больше, чем область просмотра, и выливается.   -  person Kenta Odamudo Shoji    schedule 18.06.2013


Ответы (1)


Возможно, это не идеальное решение для вас, но вы можете попробовать.

1) Обнаружение жеста щипка

2) рассчитать масштабный коэффициент (вы можете сделать это вручную или использовать класс ScaleDetector)

3) Используйте LayoutParams, чтобы на самом деле изменить размер вашего текстового представления.

4) однако он не будет масштабировать размер текста, но вы можете сделать это программно в соответствии с вашим масштабным жестом.

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

person dd619    schedule 18.06.2013